为什么猫鼬隐藏了我的田地?

时间:2017-01-07 21:08:36

标签: mongoose

当我在预先保存的钩子中设置它时,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并检查该文档时,我看到了时间戳字段!

怎么回事?

1 个答案:

答案 0 :(得分:1)

问题出在您的

号召唤上
pm.save();

这是一个异步调用,期待回调。

将此更改为

pm.save(function(err){ 
    setTimeout(function(){console.log(pm)}, 2000);
});

它应该按预期工作。