node.js sequelize:多个'where'查询条件

时间:2012-05-29 22:42:56

标签: node.js sequelize.js

如何查询具有多个条件的表? 以下是工作的例子:

Post.findAll({ where: ['deletedAt IS NULL'] }).success()

Post.findAll({ where: {topicId: req.params.id} }).success()

然后,如果我需要结合条件,我觉得我需要做类似的事情

Post.findAll({ where: [{topicId: req.params.id}, 'deletedAt IS NULL'] }).success()

,但不起作用。
sequelize等待的语法是什么?

节点调试说:

  

DEBUG:TypeError:Object#没有方法'replace'

如果重要......

5 个答案:

答案 0 :(得分:21)

你可以这样做:

Post.findAll({ where: {deletedAt: null, topicId: req.params.id} })

哪个会被翻译为deletedAt IS NULL

顺便说一句,如果您需要deletedAt NOT IS NULL,请使用:

Post.findAll({ where: {deletedAt: {$ne: null}, topicId: req.params.id} })

答案 1 :(得分:10)

只是做:

Post.findAll(
    { where: ["topicId = ? AND deletedAt IS NULL", req.params.id] }
).success()

或者您需要或查询?

答案 2 :(得分:4)

请注意,截至本帖子和最新版本的续集,上述答案已过时。我发布了我工作的解决方案,希望能节省一些时间。

filters["State"] = {$and: [filters["State"], {$not: this.filterSBM()}] };

注意JSON对象里面的$和数组缺少?令牌替换。

或者采用更一般的方式,因为这可能有助于有人围绕它:

{ $and: [{"Key1": "Value1"}, {"Key2": "Value2"}] }

答案 3 :(得分:2)

这给了我 ./src/components/index.js Attempted import error: 'App' is not exported from './App'.

SELECT `id`, `title`, `description`, `test`, `published`, `createdAt`, `updatedAt` FROM `tests` AS `test` WHERE (`test`.`title` LIKE '%3%' OR `test`.`description` LIKE '%2%');

答案 4 :(得分:1)

新版本中试试此

Post.findAll({
  where: {
    authorId: 12,
    status: 'active'
  }
}).then(function (data) {
    res.status(200).json(data)
            })
   .catch(function (error) {
                res.status(500).json(error)
   });;