我正在尝试使用 sequelize 查询连接表: 这是模型:
db.client.belongsToMany(db.user, {
through: db.clientUser,
onDelete: 'cascade',
});
db.user.belongsToMany(db.client, {
through: db.clientUser,
});
这就是我想要做的:
db.user.findAll({
where: {
group_id: 1,
},
include: [{
model: db.clientUser,
where: {
is_manager: 1,
}
}],
raw: true,
})
但是我收到以下错误:client_user 未关联到用户!
知道这个问题的原因是什么吗?
最佳答案
您从 user
through clientUser
声明了 client
之间的关系。虽然迂腐,但它的提示在技术上是正确的:client
和 clientUser
之间没有明确声明的关系。也不应该:您的 belongsToMany
关系应该解决这个问题。可以调整您的查询以处理此关系。
注意:我不知道 group_id 和 is_manager 在什么表中。它们可能需要重新洗牌。
db.user.findAll({
where: {
group_id: 1,
},
include: [{
model: db.client,
through: {
where: {
is_manager: 1, // Assuming clientUser.is_manager?
},
}],
raw: true,
})
关于node.js - 连接表上的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47404648/