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