[英]Sequelize - query with or operator and model association
使用Sequelize ,我有两个具有多对多关联的模型: User
和Category
。
我想获取属于当前用户的所有类别,以及具有特定属性的类别,但我不知道如何,仅需一个查询...
根据文档 ,我正在使用Op.or
运算符,以及用于关联模型的$Model.attribute$
语法(请参见此处 )。
let categories = await models.category.findAll({
where: {
[Op.or]: [
{ someCategoryProperty: true },
{ '$User.id$': req.currentUser.id },
],
},
include: [{
model: models.user,
as: 'User',
}],
});
如果我为Category模型添加2个条件,该运算符将起作用,但是如何在关联上添加一个条件?
我终于找到了提示:
实际上, $Model.attribute$
不是一个好的模式, $database_table_name.attribute$
是一个好的模式。
使用'$..$'
语法,我们必须使用数据库表名称 ,而不是模型。
如果我的模型称为user
,则Sequelize将数据库名称设置为users
!
所以这段代码有效:
let categories = await models.category.findAll({
where: {
[Op.or]: [
{ someCategoryProperty: true },
{ '$users.id$': req.currentUser.id },
],
},
include: [{
model: models.user,
}],
});
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.