Javascript 如何在mongoose中更新查询前或查询后钩子上的文档?

Javascript 如何在mongoose中更新查询前或查询后钩子上的文档?,javascript,node.js,mongoose,hook,Javascript,Node.js,Mongoose,Hook,我正在尝试更新查询挂钩上的字段。例如: var mySchema = new Schema({ name: String, queryCount: {type: Number, default:0} }); 我想在每个find或findOne查询上增加并更新queryCount字段 mySchema.post('find', function (doc) { // here is the magic }); 我试过几件事,但到目前为止没有成功。我可以在模型中实现这一点,还是必须在

我正在尝试更新查询挂钩上的字段。例如:

var mySchema = new Schema({
  name: String,
  queryCount: {type: Number, default:0}
});
我想在每个
find
findOne
查询上增加并更新
queryCount
字段

mySchema.post('find', function (doc) {
  // here is the magic
});
我试过几件事,但到目前为止没有成功。我可以在模型中实现这一点,还是必须在控制器中实现这一点?

您需要的是


或者,您可以使用mongoose静态方法,该方法在内部调用
findAndUpdate()

然后在控制器中使用以下方法:

MyModel.findWithIncrement({name: "someName"}, function (err, result) {

})

你试过什么
doc.update({$inc:{queryCount:1},callback)
不起作用?@JasonCust这就是OP所要求的,是否可以在模型级别上进行同样的操作。此查询必须在控制器上运行。链接似乎不起作用。你能解释一下init钩子在什么时候被调用吗?(这是在查找查询中发生的情况)在Mongoose 5I中使用此方法时,请注意ParallelSaveError,我正试图使用钩子来完成此操作。如果我没有看到@laggingreflection的答案,我会接受这个。不过,谢谢你…这只是一个选择。。。我已经投票支持@laggingreflect的答案:)
mySchema.statics.findWithIncrement = function (query, callback) {

    this.findAndUpdate(query, { $inc: { queryCount: 1 })
        .exec(function(err, res) {

            if (err) return callback(err);

            //Handle response
        });
}
MyModel.findWithIncrement({name: "someName"}, function (err, result) {

})