在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新文档时会使用相同的结果值。
但是,你不需要使用这个moment
, default: 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()} });