Meteor.js/MongoDB между запросами дат не возвращает данные

У меня есть следующий фрагмент кода для получения результатов из коллекции Mongo.

var currentDate = moment().toISOString();
// RETURNING: 2016-12-10T20:36:04.494Z

var futureDate = moment().add(10, "days").toISOString();
// RETURNING: 2016-12-20T20:36:04.495Z

return agenda = Agendas.find({
  "agendaDate": { '$gte': currentDate, '$lte': futureDate }
});

И дата хранится в коллекции MongoDB, как показано ниже;

{ 
"_id" : ObjectId("584877e56466dd236cd95f15"), 
"agendaDate" : ISODate("2016-12-12T17:28:25.000+0000"), 
"agendaTime" : "20:59", 
"agendaEvent" : "Test event" 
}

Однако я не получаю никаких результатов, возвращаемых как все. Я настроил 3 тестовых документа, 2 в диапазоне, 1 снаружи.

Может ли кто-нибудь объяснить, что я делаю неправильно, и помочь исправить код?


person Sam    schedule 10.12.2016    source источник


Ответы (2)


Вам нужно сравнивать даты с реальными объектами даты, а не со строками, представляющими их.

То есть вам нужно получить дату из ваших moment объектов, используя toDate() метод.

var futureDate = moment().add(10, "days").toDate();
person MasterAM    schedule 10.12.2016
comment
Работает. Спасибо МастерАМ. Выбрано в качестве ответа. - person Sam; 11.12.2016

На самом деле moment.toISOString() возвращает строку, поэтому вы не можете использовать ее для сравнения с объектом даты в запросе mongodb. Вы должны рассмотреть возможность создания объекта даты для этого. Регс, Янн

person Yann    schedule 10.12.2016