如何更新mongoose的前或后查询钩子文件?

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

var mySchema = new Schema({ name: String, queryCount: {type: Number, default:0} }); 

我想增加和更新每个findfindOne查询queryCount字段。

 mySchema.post('find', function (doc) { // here is the magic }); 

我已经尝试了一些东西,但迄今为止没有成功。 我可以在模型中做到这一点,或者我必须在控制器中做到这一点?

你想要的是一个post init钩子

 mySchema.post('init', function (doc) { doc.queryCount++; doc.save(); }); 

或者,你可以使用一个内部调用findAndUpdate()静态方法

 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) { })