我希望使用Sequelize从postgres数据库中提取项目,但只返回ID与给定数组中的任何项目不相等的项目。
在Sequelize documentation中,$ne
和not equal
的运算符$in
用于返回具有与给定数组匹配的值的属性的项,但它没有&#39} ;看起来有一个运算符可以将这两者结合起来。
例如,如果我的数据库中包含ids [1, 2, 3, 4, 5, 6]
的项目,并且我想通过与另一个数组(即[2,3,4]
)进行比较来过滤这些项目,那么它将返回项目{ {1}}。在我的例子中,我也随机化了退货订单和限价,但这可以忽略不计。
[1, 5, 6]
编辑:使用@piotrbienias回答,我的查询如下所示:
function quizQuestions(req, res) {
const query = {
limit: 10,
order: [ [sequelize.fn('RANDOM')] ],
where: {
id: { $ne: [1, 2, 3] } // This does not work
}
};
Question.findAll(query)
.then(results => res.status(200).json(map(results, r => r.dataValues)))
.catch(err => res.status(500).json(err));
}
答案 0 :(得分:9)
存在$notIn
,你一定错过了它。 y.isin(['nan', '0', '']) # list contains whatever you want to be evaluated as null
的示例性查询生成
$notIn
修改强>
您引用的文档适用于Sequelize的SELECT "id", "name"
FROM "categories" AS "Category"
WHERE "Category"."id" NOT IN (1, 2);
版本,您应该更新为2.0
。
答案 1 :(得分:6)
const Op = Sequelize.Op
where: {
id: {[Op.notIn]:[1, 2, 3]}
}
请参阅operators:
Sequelize公开了可用于创建更复杂比较的符号运算符