Диапазон дат запроса мангуста

#javascript #mongodb #mongoose

#javascript #mongodb #мангуст

Вопрос:

Я сохраняю даты в своей базе данных mongo DB следующим образом

 date: new Date()
  

Вот поле в модели

 date: {type: Date, required: true},
  

Он успешно сохраняется и выглядит следующим образом в БД 2020-09-14T15:28:19.462 00:00

Затем я хочу запросить документы между двумя датами следующим образом

 router.put('/filter',  (req, res, next) =>{
      //console.log(req.body.dateOne.year)
      //console.log(req.body.dateTwo.year)
      var d = new Date(2020, 09, 1);

      var endd = new Date(2020, 09, 30);

        History.find({"date":  {$gte: d, $lte: endd}}).then(documents =>{
        
        if (documents.length >= 1){

        res.status(200).json({
            message: "Got History",
            posts: documents
        });
        } else{
            res.status(404).json({
                message: "Nothing matches",
             
            });
        }

        });
  
  });
  

Он всегда не возвращает документов, я просмотрел похожие вопросы о переполнении стека, и другие упоминали, что это потому, что date хранит время, поэтому попытался добавить время к датам также следующим образом

 var d = new Date(2020, 09, 1, 01, 00, 00, 00);
  

Но все еще безуспешно.

Есть ли способ сделать это только с помощью объекта даты javascript? или мне нужно будет использовать что-то вродеhttps://date-fns.org /?

Также, если я изменю дату начала на 2019, а не на 2020, он найдет документы? Не уверен, почему?

Ответ №1:

попробуйте с :

 var d = new Date(2020, 8, 1);
var endd = new Date(2020, 8, 30);
  

В Date() месяце аргумент начинает отсчет с 0, а не с 1.

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

1. В недоумении поднимает руки вверх! Конечно, сейчас все так просто. Спасибо, Алексис!

2. Это функция, которая противоречит интуиции. Месяцы начинаются с 0, а дни начинаются с 1