2017-01-25 38 views
0

我想根據作爲請求查詢參數發出的標誌在post save鉤子中執行一些代碼。如何在回調函數中讀取此變量?我可以以某種方式將它設置在架構或對象上,以供我以後參考?Mongodb:基於標誌的火後保存鉤子

var User = new Schema({...}); 

User.post('save', function(callback){ 
    if(someFlag){ 
     ...... 
    } 
}); 

回答

0

任何文件,通過模式方法可以訪問它的模式所以,你可以:

router.js

router 
    .route('/') 
    .get(function(req, res) { 
     var user = new User(); 
     user.schema.post('save', function() { 
     var flag = req.query.flag; 
     // ... 
     }); 
     user.save(); 
    }); 


或者將其定義爲一個文件的方法因此每個文檔都可以訪問此方法:

model.js

var User = new Schema({...}); 

User.methods.mySavePost = function(req, res) { 
    this.schema.post('save', function() { 
    var flag = req.query.flag; 
    // ... 
    }); 
} 

,然後在你的路由器:

router 
    .route('/') 
    .get(function(req, res) { 
     var user = new User(); 
     // register your post save hook 
     user.mySavePost(req, res); 
     user.save(function(err) { 
     // this will call after your mySavePost method hook 
     }); 
    }) 
+0

我希望這是一個正確的答案,我們不能稱之爲'mySavePost'爲每個請求。對於每個'post'調用,一個新的鉤子被添加到模式中,並且所有鉤子都被調用,並具有所有歷史請求對象 – sidgate