【问题标题】:Trouble updating a date in MongoDB via Mongoose.js通过 Mongoose.js 在 MongoDB 中更新日期时遇到问题
【发布时间】:2016-03-22 02:12:15
【问题描述】:

我正在尝试使用当前日期更新现有文档中的字段。我找到了一个建议使用 $currentDate 的答案。我尝试过:

var x = Product.findByIdAndUpdate(
    documentID,
    {$currentDate: {'lastUpdated':true}},
    {new :true},
    function(e,d){x = arguments})

文档返回得很好,我所做的其他更改都存在,但日期没有通过。

Schema 定义为

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

x.lastUpdated 为空(甚至不是 null,只是空白); 在尝试 $currentDate 方法之前,我还为更新对象尝试了以下操作:

lastUpdated: Date
lastUpdated: Date()
lastUpdated: new Date
lastUpdated: new Date()
lastUpdated: Date.now()
lastUpdated: Date().toISOString()
lastUpdated: new Date().toISOString();

OMG::: 所以问题在于返回对象的显示方式。 x.lastUpdated 在 CLI 中调用时返回空白或显示空白,因为它是 Date 实例(在输入控制台时也返回空行)。但是,console.log(x.lastUpdated) 正确打印了日期。当我注意到console.log()'ing 回调中的数据会正常显示日期时,我意识到了这一点,但在命令行中调用数据对象却没有。检查 mongoLab.com 上的文档确认日期实际上一直存在。好吧,我的生命中还有 3 个小时......很高兴它被弄清楚了 :)

已编辑::: 以阐明 console.log()'ing 对象与在命令行中调用对象之间的区别。

【问题讨论】:

    标签: node.js mongodb validation date mongoose


    【解决方案1】:

    在 CLI 中调用日期实例时显示空白。您必须控制台记录日期对象才能看到其显示的信息。

    【讨论】:

    • 这不是真的。它宁愿是你的代码的错,你显然没有在你的问题中显示,也没有在你所谓的答案中显示。
    • 已经验证过了: > x[1].lastUpdate // 返回空行; > console.log(x[1].lastUpdate) //返回日期的打印输出
    猜你喜欢
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2012-07-31
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2020-11-10
    相关资源
    最近更新 更多