Я пытаюсь написать это предложение where в синтаксисе Sequelize:
SELECT * FROM 'artist' WHERE 'deleted_at' = null OR 'deleted_at' > now();
Я разделил предложение where несколькими способами, включая замену [sequelize.Op.or]
просто or
:
where: {
deleted_at: {
[sequelize.Op.or]: [null, { [sequelize.Op.gt]: (new Date()) }]
}
но я должен быть в синтаксисе, потому что мой вывод показывает, что он выполняет этот запрос:
SELECT 'id', 'name', 'created_at', 'created_by', 'deleted_at', 'deleted_by' FROM 'artist' AS 'artist' WHERE 'artist'.'deleted_at' = '2017-12-22 00:00:00' LIMIT 1;
Время неверно (должно быть показано днем позже, а не 00:00:00), оно не должно показывать знак равенства, и он даже не упоминает нуль. Я не могу сказать, что такое синтаксис из документации. Прижав голову к стене.
вы можете попробовать это?
where: {
[Op.or]: [{deleted_at: null}, {deleted_at: { [sequelize.Op.gt]: (new Date()) }}]
}
Я поставил его в разделе ответа для форматирования :)
В дополнение к ответу от xelliof, операторы также могут быть записаны без квадратных скобок следующим образом: личное предпочтение:
where: {
$or:
[
{ deleted_at: null },
{ deleted_at: { $gt: (new Date()) } }
]
}