Возвращает данные, ЕСЛИ диапазон дат содержит метку времени

#node.js #express #date #mongoose

Вопрос:

Я использую Nodejs, Express и мангуста, что я пытаюсь сделать, это следующее.
У меня есть этот объект с форматом:

 {
  _id: 60c824cfeaaa84a7b4e16dbf,
  ActionID: 5f2715c9569c9700523bbcc3,
  ActionType: 'PushToBrand',
  EndDate: 2021-06-27T00:54:00.000Z,
  StartDate: 2021-06-15T00:54:00.000Z,
  ImageName: 'h21fTvVniZzqVAkY9oPJDj.jpg',
  ImagePlace: 1
},  
{
  _id: 60c824cfeaaa84a7b4e16sxf,
  ActionID: 5f2715c9569c9700523bbcc3,
  ActionType: 'PushToBrand',
  EndDate: 2021-05-27T00:54:00.000Z,
  StartDate: 2021-05-15T00:54:00.000Z,
  ImageName: 'h21fTvVniZzqVAkY9oPJDj.jpg',
  ImagePlace: 2
}
 

Итак, как только параметр TimsStamp получен, мне нужно отфильтровать объект, который действительно содержит метку времени в соответствующем диапазоне даты начала и даты окончания.

Может быть, что-то вроде этого:

 BolBanners.find({StartDate: Is equal or greater than Date.now() amp;amp; EndDate:_IS equal or minor than Date.now()});
 

***ОБНОВЛЕНИЕ

Изображение DB compas введите описание изображения здесь

Комментарии:

1. вы можете использовать $lte и $gte операторы, и использовать new Date() функцию.

2. Я пробовал это const validImages = BolBanners.find({StartDate: {$lte: Date.now()}, EndDate: {$gte: Date.now()}}); , и это не сработало.

3. смотрите рабочую игровую площадку . использовать new Date() . и убедитесь, что поля Дата начала и дата окончания имеют тип даты, а не строку.

4. Спасибо! Я предполагаю, что получаю клоры, но, несмотря на то, что дата начала и дата окончания имеют формат даты, запрос не выполняется должным образом @turvishal

5. @turivishal спасибо за сотрудничество, к сожалению, я кое — что упускаю. Это мой коллекционный документ [ i.stack.imgur.com/PajH4.jpg] есть еще какие-нибудь предложения??

Ответ №1:

Хорошо, решение, предоставленное @turivishal, было правильным. Вина была моя, из-за чего-то, что я игнорировал, и я не опубликовал это, так как не видел полной картины.

Я спрашивал вот так:

 var validImages;
try {
    validImages = BolBanners.find({
        StartDate: {
            $lte: new Date()
        },
        EndDate: {
            $gte: new Date()
        }
    });
    console.log(validImages)
    res.send(validImages);
} catch (e) {
    console.log('error')
    res.json({msg: 'no response'})
}});
 

Но мне не хватало знаменитого ожидания, так как это асинхронная функция при вызове вашей базы данных.

Спасибо за руководство.