【发布时间】: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