2012-08-31 53 views
13

Mongoose docs中建議我應該能夠使用插入「init」鉤子的中間件來控制流。Mongoose - 如何在'init'事件中挖掘模式中間件?

但是,到目前爲止,只有通過「保存」和「驗證」才能成功。

當我做這樣的事情,無論這些中間件曾經被調用:

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

我缺少的東西?

回答

22

事實證明,在創建新模型時,「init」事件/鉤子未被觸發,只有在從數據庫加載現有模型時才觸發。看來我應該使用pre/validate鉤子。

+0

這是真的嗎?按照預期,我似乎正在初始創建後調用後期init。 –

2

我已經成功地使用的中間件等MySchema.post('init', function() { ... });與貓鼬,然後將其用於在find查詢加載的每個模型實例執行。請注意,此中間件沒有next參數調用,它應該在完成時返回。