Sails.js - модификаторы запроса ватерлинии для дат с помощью sails-mysql?

Я только начал использовать Sails.js с его ORM, Waterline, и мне он очень нравится, но я не уверен, как использовать модификаторы запроса для дат. Я использую sails-mysql. В частности, я пытаюсь получить строки с полем datetime между двумя конкретными датами. Я пробовал это сделать:

MyModel.find()
    .where({ datetime_field: { '>=': startDate } })
    .where({ datetime_field: { '<=': endDate } })
    .done(function(err, objects){
        // ...
    });

startDate и endDate - два Date объекта. Я также пробовал преобразовать их в строки с помощью toString(). В обоих случаях я получаю каждую строку из базы данных вместо строк между двумя датами. Есть ли способ сделать это, или эта функция еще не является частью Waterline или sails-mysql?


person lmanco    schedule 11.11.2013    source источник


Ответы (2)


В той же лодке (это не каламбур), но с парусами-монго.

При условии, что у вас правильное форматирование даты (как упоминает Джереми). Я лично храню даты в формате UTC moment(startDate).toISOString() на клиенте, который moment(startDate) для работы с местными датой и временем .

Глядя на источник воды для отложенных запросов ( см. where метод) он применяет самые последние datetime_field критерии, которые он считает действительными.

После рыскания кода, поисков и группы я не нашел ничего, что помогло. Я очень надеюсь, что пропустил что-то очевидное, но сейчас я предлагаю привязать результаты к вашему startDate, а затем ограничить его лимитом,

e.g.

.where({ datetime_field: { '>=': startDate } })
.limit(100)
person Shane Maiolo    schedule 14.11.2013

Вам нужно будет отформатировать дату как строку в формате ГГГГ-ММ-ДД. Если вам нужна помощь в форматировании дат, moment.js предлагает для этого множество интересных функций.

оформление свидания будет выглядеть примерно так

var formatedStartDate = moment(startDate).format('YYYY-MM-DD');
person Jérémie Parker    schedule 13.11.2013