在我的猫鼬模型中,我有一些依赖时间的统计数据.我的想法是在加载模型之后添加一个
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();
- });