Как написать предложение WHERE с Datetime, используя Sequelize в Node

0

Я пытаюсь написать это предложение 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), оно не должно показывать знак равенства, и он даже не упоминает нуль. Я не могу сказать, что такое синтаксис из документации. Прижав голову к стене.

Теги:
sequelize.js

2 ответа

0
Лучший ответ

вы можете попробовать это?

  where: {
            [Op.or]: [{deleted_at: null}, {deleted_at:  { [sequelize.Op.gt]: (new Date()) }}]
        }

Я поставил его в разделе ответа для форматирования :)

0

В дополнение к ответу от xelliof, операторы также могут быть записаны без квадратных скобок следующим образом: личное предпочтение:

    where: {
        $or:
        [
            { deleted_at: null },
            { deleted_at: { $gt: (new Date()) } }
        ]
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню