在MongoDB文档中使用MomentJS作为默认date

我正在尝试使用MomentJS获取非本地化的UTC时间,并将其设置为在Mongo中创build的新文档的默认值。

var SubFavoriteSchema = new Schema({ user : { type: String, ref: 'Account'}, date : {type: Date, default: moment.utc()} }); 

问题是,moment.utc()返回节点服务器启动的date。 因此,如果我在1月1日启动服务器,即使文档是在1月10日创build的,所有文档都会获得1月1日的UTC时间。

任何想法为什么它不断获取服务器的开始时间而不是当前时间?

问题在于,在创build模式时,您正在调用moment.utc()函数(一次),因此创build新文档时会使用相同的结果值。

但是,你不需要使用这个momentdefault: Date.now将会做你想做的事,因为这个函数返回当前的UTC时间。 请注意,您不要调用 now函数,您只需传递函数本身。 这是关键的区别。

你需要使用工厂function。

 var currDate(){ return function(){ return moment.utc(); } } var SubFavoriteSchema = new Schema({ user : { type: String, ref: 'Account'}, date : {type: Date, default: currDate()} });