Mongodb:基于标志的Fire post save hook

时间:2017-01-25 14:00:36

标签: node.js mongodb mongoose

我想基于作为请求查询参数的标志在post save钩子中执行一些代码。如何在回调函数中读取此变量?我可以以某种方式将它设置在架构或我稍后可以引用的对象上吗?

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

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

1 个答案:

答案 0 :(得分: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
      });
    })