Запрос Mongoose ничего не возвращает, а запрос MongoDB возвращает ожидаемые результаты - PullRequest
0 голосов
/ 13 сентября 2018

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

У меня есть этот запрос:

q = { 'recorded_timestamp': { '$lt': '2018-09-12T21:02:05.187Z' } };

Я также пробовал следующие запросы, но ни один из них не работает:

q2 = { 'recorded_timestamp': { '$lt': new Date() } };
q3 = { 'recorded_timestamp': { '$lt': new Date(Date.now()) } };
q4 = { 'recorded_timestamp': { '$lt': new Date().toISOString() } };

Когда я пытаюсь сделать MyModel.find(q), я ничего не получаю обратно. Однако, если я скопирую этот запрос точно в оболочку MongoDB, я получу ожидаемые результаты.

const promise = new Promise(resolve => {
  const results = MyModel.find(q)
  resolve(results);
});
return promise.then(results => {
  return results; // results = [], but they shouldn't
});

Что здесь происходит?

  • Mongoose версия: 4.13.14
  • Версия MongoDB: 3.4.17
  • Версия узла: 8.11.2

Вот соответствующая выдержка из модели:

const MySchema = new Schema({
  some_ID: {
    type:     String,
    required: true
  },
  recorded_timestamp: {
    type:     Date,
    required: true
  }
}, { timestamps: true });

module.exports = mongoose.model('MyModel', MySchema);

Вот фрагмент примера данных, которые вставляются в коллекцию.

{ "some_ID": "16499", "recorded_timestamp": "2007-03- 13T07:39:52.959057" }
{ "some_ID": "17158",  "recorded_timestamp": "2007-09- 12T15:31:18.244142" }

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Оказывается, что большой JSON-файл, который вставляет кучу примеров данных, хранил значения в виде строк (именно поэтому q = { 'recorded_timestamp': { '$lt': '2018-09-12T21:02:05.187Z' } } работал при выполнении в оболочке MongoDB.)

Я изменил тип'Записанная_метка' в моей схеме является строкой, и теперь она работает.

Этот поток помог мне диагностировать мою проблему: Запросы Mongoose по дате не имеют результатов, MongoDB Shell Works

0 голосов
/ 13 сентября 2018

Вам нужно использовать обратный вызов, чтобы увидеть результат.

MyModel.find(q, function(err, result) {
    if (err) {console.log(err);}
    console.log(result);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...