使用Sequelize,我有两个带有多对多关联的模型:User
和Category
。
我想要获得属于当前用户的所有类别,以及具有某个属性的类别,但我不明白如何获得,只有一个查询...
根据documentation和关联模型的$Model.attribute$
语法,我使用了Op.or
运算符(参见here)。
let categories = await models.category.findAll({
where: {
[Op.or]: [
{ someCategoryProperty: true },
{ '$User.id$': req.currentUser.id },
],
},
include: [{
model: models.user,
as: 'User',
}],
});
如果我添加了关于Category模型的两个条件,运算符就可以工作,但是如何在关联上添加一个条件?
发布于 2019-02-20 20:58:15
我终于找到了小贴士:
实际上,$Model.attribute$
不是好的模式,$database_table_name.attribute$
才是好的模式。
使用'$..$'
语法时,我们必须使用数据库表名,而不是模型。
如果我的模型名为Sequelize,则将数据库名设置为users
!user
!
所以这段代码是有效的:
let categories = await models.category.findAll({
where: {
[Op.or]: [
{ someCategoryProperty: true },
{ '$users.id$': req.currentUser.id },
],
},
include: [{
model: models.user,
}],
});
谢谢
https://stackoverflow.com/questions/54774258
复制相似问题