13

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

但是,到目前为止,我仅通过“保存”和“验证”取得了成功。

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

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

我错过了什么吗?

4

2 回答 2

23

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

于 2012-09-04T17:34:52.113 回答
2

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

于 2012-08-31T22:26:47.647 回答