在Mongoose中加载后更改模型值

在我的mongoose模型中,我有一些依赖于时间的stats 。 我的想法是添加一个中间件,以便在模型加载完成后立即更改这些统计信息。

不幸的是,关于post Hook的文档有点不清晰。 看来我可以使用像这样的钩子:

 schema.post('init', function(doc) { doc.foo = 'bar'; return doc; }); 

他们唯一的例子涉及console.log -outputs。 它不能以任何方式解释doc是否必须被返回,或者如果后钩的变化根本是不可能的(因为它不是asynchronous的,对于复杂的想法可能没什么用处)。

如果'init'pre不是自动更新负载模型的正确方法,那么是什么?

这是我们如何更新加载模型,asynchronous工作:

 schema.pre('init', function(next, data) { data.property = data.property || 'someDefault'; next(); }); 

Pre-init是特殊的,其他钩子有一个稍微不同的签名,例如预保存:

 schema.pre('save', function(next) { this.accessed_ts = Date.now(); next(); });