Node.js sequelize: несколько условий "where" запроса

Как я могу запросить таблицу с несколькими условиями? Вот примеры, которые работают:

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()

но это не работает.
Каков синтаксис, ожидающий продолжения?

node debug говорит:

DEBUG: TypeError: Object # не имеет метода 'replace'

если это важно...

Ответы

Ответ 1

Обратите внимание, что с этой публикации и последней версией sequelize вышеупомянутые ответы устарели. Я отправляю решение, в котором я работал, в надежде спасти кого-то некоторое время.

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

Обратите внимание на $и массив внутри объекта JSON и отсутствие? замена токена.

Или добавьте более общий способ, так как это может помочь кому-то обернуть вокруг себя:

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

Ответ 2

Вы можете сделать:

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} })

Ответ 3

Просто выполните:

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

Или вам нужен запрос или запрос?

Ответ 4

В новой версии попробуйте

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