在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(); });