在Mongoose docs中建议我应该能够使用插入“init”挂钩的中间件来控制流程。
但是,到目前为止,我只能通过“保存”和“验证”获得成功。
当我做这样的事情时,这些中间件都不会被调用:
MySchema.post( "init", function (next) { console.log("post init") });
MySchema.pre( "init", function (next) { console.log("pre init") });
我错过了什么吗?
答案 0 :(得分:23)
事实证明,在创建新模型时不会触发“init”事件/钩子,只有在从数据库加载现有模型时才会触发它。我似乎应该使用pre / validate挂钩。
答案 1 :(得分:2)
我已成功使用像MySchema.post('init', function() { ... });
这样的中间件和Mongoose,然后为find
查询中加载的每个模型实例执行。请注意,使用此中间件调用next
参数时,它应该在完成时返回。