Sequelize.js:查询不在数组中($ ne表示数组中的项)

Yo *_*ita 5 postgresql sequelize.js

我希望使用Sequelize从postgres数据库中提取项目,但只返回id与给定数组中的任何项目不相等的项目.

Sequelize文档,也有运营商$nenot equal$in用于返回与给定数组匹配值的属性项目,但它并不像有什么东西,结合这两种操作.

例如,如果我在数据库中包含id的项目[1, 2, 3, 4, 5, 6],并且我想通过与另一个数组(即[2,3,4])进行比较来过滤这些项目,那么它将返回项目[1, 5, 6].在我的例子中,我也随机化了退货订单和限价,但这可以忽略不计.

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));
}
Run Code Online (Sandbox Code Playgroud)

编辑:使用@piotrbienias回答,我的查询如下所示:

  const query = {
    limit: 10,
    order: [ [sequelize.fn('RANDOM')] ],
    where: {
      id: { $notIn: [1, 2, 3] }
    }
  };
Run Code Online (Sandbox Code Playgroud)

小智 12

使用

const Op = Sequelize.Op
where: {
      id: {[Op.notIn]:[1, 2, 3]}
}
Run Code Online (Sandbox Code Playgroud)

操作员

Sequelize公开了可用于创建更复杂比较的符号运算符


pio*_*ias 11

存在$notIn,你一定错过了它.具有$notIn生成的示例性查询

SELECT "id", "name"
FROM "categories" AS "Category"
WHERE "Category"."id" NOT IN (1, 2);
Run Code Online (Sandbox Code Playgroud)

编辑

您引用的文档是2.0Sequelize的版本,您应该更新到3.0.