#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