当我在预先保存的钩子中设置它时,Mongoose似乎隐藏了我的时间戳字段。知道为什么吗?
我有这个架构:
var dpsSchema = new Schema({
timestamp: Date,
_loaded_schedules: [{type: Number, ref: 'prun_schedules'}]
})
dpsSchema.pre('save', function(next){
this.timestamp = new Date();
next();
})
我运行此代码:
var Dpm_model = mongoose.model('daily_production_meta', dpm_schema);
var pm = new Dpm_model();
pm.save();
setTimeout(console.log(pm), 2000);
生成的控制台日志如下所示:
{ _id: 5871410c08b91cfd82124656,
_loaded_schedules: [] }
但是当我通过终端登录mongodb并检查该文档时,我看到了时间戳字段!
怎么回事?
答案 0 :(得分:1)
问题出在您的
号召唤上pm.save();
这是一个异步调用,期待回调。
将此更改为
pm.save(function(err){
setTimeout(function(){console.log(pm)}, 2000);
});
它应该按预期工作。