Подтвердить что ты не робот

Sequelize, как найти строки с несколькими параметрами where и timestamp> NOW()

Как это сделать с помощью Sequelize?

SELECT FROM sessions WHERE user_id = ? AND token = ? AND expires > NOW()

Здесь то, что я пытаюсь сделать (предположим, что Session - модель Sequelize):

Session.find({
    where: {
        user_id: someNumber,
        token: someString,
        //expires > NOW() (how do I do this?)
    }
}).on('success', function (s) { /* things and stuff */ });

Спасибо!

4b9b3361

Ответ 1

Вы пытались использовать строковое обозначение искателей в sequelize?

Session.find({
  where: ['user_id=? and token=? and expires > NOW()', someNumber, someString]
}).on('success', function (s) { /* things and stuff */ });

Вы можете проверить эту страницу: http://sequelizejs.com/?active=find-objects#find-objects

Надеюсь, что это сработает. В противном случае это ошибка: D

Ответ 2

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

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

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

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

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

Ответ 3

Другой метод:

Session.find({
  where: {
    user_id: someNumber,
    token: someString,
    expires: {
      $gt: (new Date())
    }
  }
}).on('success', function (s) { /* things and stuff */ });