【问题标题】:Possibly unhandled CastError: Cast to date failed for value "function now() { [native code] } on Mongoose可能未处理的 CastError: Cast to date failed for value "function now() { [native code] } on Mongoose
【发布时间】:2018-06-27 19:09:17
【问题描述】:

运行 Express 应用时出现以下错误

可能未处理 CastError: Cast to date failed for value "function now() { [本机代码] }

日期字段在模型上定义为:

updated: {
  type: Date,
  default: Date.now
}

所以,我正在记录响应,并且该字段采用这种格式

updated: Thu May 21 2015 16:21:32 GMT-0300 (ART)

实际上我们使用的是 Mongoose v 3.4.0

我也尝试使用 Moment.js 格式化响应,但警告仍然出现在终端上。

非常感谢您的帮助。

【问题讨论】:

  • 这听起来像是 string function now() { [native code] } 最终出现在您的数据库中(或模型实例中),而 Mongoose 正试图将该字符串转换为 Date实例(并失败)。
  • 试试Date.now()
  • 看起来好像文档有误。我也在使用 Date.now,但正如@ken 建议的那样,它是 Date.now()

标签: node.js mongodb datetime express mongoose


【解决方案1】:

老问题,但正如 Ken 所提到的,要创建或更新为架构/模型提供日期值

sendHelpDate: Date.now()

这将作为"sendHelpDate" : ISODate("2018-06-27T10:49:29.328+0000"), 保存到数据库中 而不是传递 Date.now 的功能,见下文:

    message: 'Cast to Date failed for value "[Function: now]" at 
    path "sendHelpDate"',
    name: 'CastError',        
    stringValue: '"[Function: now]"',
    kind: 'Date',
    value: [Function: now],
    path: 'sendHelpDate',
    reason: [Object]                                                         
    _message: 'Bookings validation failed', 
    name: 'ValidationError' }

希望额外的细节对将来的人有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 2021-01-07
    • 1970-01-01
    • 2017-03-23
    • 2015-08-10
    • 2017-08-14
    • 2017-02-06
    • 2019-02-17
    相关资源
    最近更新 更多