Я использую Meteor для создания приложения для встреч. Мне нужно вернуть встречи на выбранный день.MongoDB: запрос диапазона дат ничего не возвращает, когда он должен
Вот моя структура данных
{ "lastname" : "adsads", "firstname" : "adsadsads", "time" : "12:00 PM", "notes" : "adsadsads", "length" : 15, "date" : ISODate("2014-08-31T00:00:00Z"), "createdAt" : ISODate("2014-08-31T04:02:12.367Z"), "_id" : "gTxgn5ysRBYCros9z" }
код запроса:
console.log("Starting query build.")
var theDate = Session.get("date");
console.log(theDate);
startDate = moment(theDate).zone(-12).startOf("day")._d;
console.log(startDate);
endDate = moment(theDate).zone(-12).endOf("day")._d;
console.log(endDate);
queryPointer = appointmentList.find({date: {$gte: startDate, $lt: endDate}})
console.log(queryPointer.fetch());
Я использую ._d извлечь внутренний объект Date от момента. getDate() преобразует дату в UTC перед возвратом. Я знаю, что это плохая практика, хранение дат по местному времени, но я сделал это как попытку заставить эту проклятую работу работать. Я вернусь к UTC, если найду основную причину.
строковой запрос:
выход"{"date":{"$gte":"2014-08-31T00:00:00.000Z","$lt":"2014-08-31T23:59:59.999Z"}}"
консоли:
"Starting query build." appointmentViewer.js:13
Date 2014-08-31T01:00:00.000Z appointmentViewer.js:15
Date 2014-08-31T00:00:00.000Z appointmentViewer.js:17
Date 2014-08-31T23:59:59.999Z appointmentViewer.js:19
Array [ ]
Заранее спасибо за любую помощь!
Эй, я протестировал этот код, не смог найти никаких проблем (работает целиком на стороне клиента). Может быть, проблема в другом месте; например. действительно ли данные правильного типа? выполняются ли другие запросы? –
@NathanM У меня есть двойная и тройная проверка, что даты действительно даты. Теперь я делаю тест изоляции, перемещая свой код в новый проект метеоритов пополам и видя, могу ли я его запустить. Я знаю, что все запросы полностью работают, вот как я знаю, что в базе данных есть данные. Благодаря! – Ripdog
Я уже отбивался от этого. Переместившись на другой сервер, запустите mongod отдельно, просмотрите журналы. Если бы я не знал лучше, я бы поклялся, что запросы возвращают результаты, но как-то метеор теряет/отбрасывает их. Когда я воссоздаю запрос * точно * в веб-консоли, используя даты, скопированные из зарегистрированного объекта запроса, он отлично работает.Это просто, когда он работает от моего кода страницы, он терпит неудачу. Тьфу. – Ripdog