我有两种型号:产品和 Pin 。 Pin模型有一个属性:
var Pin = sequelize.define("pin", {
account_name: {type: Sequelize.STRING, allowNull: false}
});
我已经设置了1对多的关系:
Product.hasMany(Pin, {as: 'pins'});
现在,我试图查询产品,其中相关的引脚(如果存在)不包含account_name
属性等于特定值的引脚(让我们说&& #34;你好"。)
换句话说,如果我运行查询,我希望所有产品不带任何关联的引脚和所有现有关联引脚的产品。 account_name
属性与定义的值不匹配(我们正在使用" hello")
models.Product.findAll({
where: {
is_published: true
},
include: [
{
model: models.Pin,
as: 'pins',
where: {
account_name: {$not: 'hello'}
}
},
]
});
现在,如果没有任何相关的引脚或者只有相关的引脚具有不需要的值(这是好的),此解决方案不会返回产品。 但如果它确实有其他Pins与其他account_name
值,那么它将返回Product,而其他Pins 即使其中一个Pins包含不需要的值!那不是我想要的。
所以我觉得我需要在产品级别将where: { account_name: {$not: 'hello'} }
条件提升一级,才能实现。我猜是像
where: {
is_published: true,
'pins.pin.account_name': {$not: 'hello'}
}
但到目前为止,我一直在谷歌搜索和尝试各种奇怪的事情,没有任何工作。
有人可以建议吗?谢谢!