在我的猫鼬模型中,我有一些依赖时间的统计数据.我的想法是在加载模型之后添加一个
middleware来更改这些统计信息.
不幸的是,关于Hooks的文档有些缺乏清晰度.好像我可以用这样的钩子:
schema.post('init',function(doc) { doc.foo = 'bar'; return doc; });
他们唯一的例子就是console.log输出.它不会以任何方式解释,如果文档必须被返回或者如果改变后挂钩是不可能的(因为它不是异步的,可能没有什么用的复杂的想法).
解决方法
这就是我们如何更新加载模型,异步工作:
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(); });