Mongoose - 如何将模式中间件放入'init'事件?

时间:2012-08-31 19:19:42

标签: node.js mongodb mongoose middleware

Mongoose docs中建议我应该能够使用插入“init”挂钩的中间件来控制流程。

但是,到目前为止,我只能通过“保存”和“验证”获得成功。

当我做这样的事情时,这些中间件都不会被调用:

MySchema.post( "init", function (next) { console.log("post init") });
MySchema.pre( "init", function (next) { console.log("pre init") });

我错过了什么吗?

2 个答案:

答案 0 :(得分:23)

事实证明,在创建新模型时不会触发“init”事件/钩子,只有在从数据库加载现有模型时才会触发它。我似乎应该使用pre / validate挂钩。

答案 1 :(得分:2)

我已成功使用像MySchema.post('init', function() { ... });这样的中间件和Mongoose,然后为find查询中加载的每个模型实例执行。请注意,使用此中间件调用next参数时,它应该在完成时返回。