В моей базе данных mongo есть несколько полей типа Дата.
Используя Node и Express, я могу извлекать и отображать даты с помощью "момент" в любом желаемом формате.
Когда я сохраняю их с помощью «findByIdAndUpdate», либо дата будет обратной, либо будет возвращена недопустимая ошибка.
message: 'Cast to date failed for value "29-12-2018" at path
Моя проблема в том, что форма возвращает дату в формате ddmmyyyy, тогда как я думаю, что mongo требует, чтобы дата была отправлена обратно в формате mmddyyyy.
У этого должно быть простое решение.
В большинстве баз данных даты обычно хранятся в виде чисел, а не в "формате", который люди читают, а не в виде строки. Считайте, что строку, возвращаемую формой, нужно преобразовать в правильную дату, а не переформатировать в другую строку.
Мне удалось написать решение этого с помощью пакета Moment. Смотрите ниже мой последний код router.put("/user/:id", function(req, res){ req.body.user.weddingDate = moment(req.body.user.weddingDate, 'DD-MM-YYYY').format('MM-DD-YYYY'); User.findByIdAndUpdate(req.params.id, req.body.user, function(err, updatedUser){ if (err){ console.info(err); res.redirect("/admin"); } else { res.redirect("/admin"); } }); });





Мне удалось написать решение этого с помощью пакета Moment. См. Мой последний код в исходном сообщении выше
router.put("/user/:id", function(req, res){
req.body.user.weddingDate = moment(req.body.user.weddingDate, 'DD-MM-YYYY').format('MM-DD-YYYY');
User.findByIdAndUpdate(req.params.id, req.body.user, function(err, updatedUser)
{
if (err){
console.info(err);
res.redirect("/admin");
} else {
res.redirect("/admin");
}
});
});
Вы уверены, что MongoDB не использует Формат ISO-8601?
YYYY-MM-DD- это стандарт. Все остальное - анархия из-за двусмысленности.