Jak*_*kub 3 javascript mongoose mongodb node.js
我在我的项目中使用Mongoose,并在其中一个模式中使用Date字段,如下所示:
reservationDay: {
type: Date,
default: Date.now
}
Run Code Online (Sandbox Code Playgroud)
我可以使用此字段创建文档而不会出现问题.当我在创建它之后的console.log时,我得到:
reservationDay: Thu Nov 20 2014 04:45:00 GMT+0100 (CET)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试更新此文档时,即使不更改reservationDay字段,也会出现问题.这是我收到的错误消息:
name: 'CastError',
message: 'Cast to date failed for value "20/11/2014 04:11" at path "reservationDay"' } CastError: Cast to date failed for value "20/11/2014 04:11" at path "reservationDay"
Run Code Online (Sandbox Code Playgroud)
以下是我在服务器端更新此文档的方法:
Reservation.findOne({ _id: id }).exec(function(err, reservation) {
if (err) {
//handle
}
if (!reservation) {
//handle
}
reservation = extend(reservation, req.body);
reservation.save(function(err, updatedReservation) {
if (err) {
//handle
}
return res.json(reservation);
});
});
Run Code Online (Sandbox Code Playgroud)
并且req.body中的日期没有改变.
什么可能导致此错误的想法?
谢谢!
cdb*_*rin 11
"20/11/2014 04:11"是一种无效的ISODate格式.您正在某处将reservationDate转换为无效格式的字符串.您需要将其转换为有效的ISODate格式(前一天):
new Date("11/20/2014 04:11") // Thu Nov 20 2014 04:11:00 GMT+0100 (CET)
new Date("2014/11/20 04:11") // Thu Nov 20 2014 04:11:00 GMT+0100 (CET)
new Date("20/11/2014 04:11") // Invalid Date
Run Code Online (Sandbox Code Playgroud)
为了便于操作日期格式,我建议使用moment.js
| 归档时间: |
|
| 查看次数: |
16440 次 |
| 最近记录: |