如何更新mongoose的前或后查询钩子文件?
我正在尝试更新查询钩子上的字段。 例如:
var mySchema = new Schema({ name: String, queryCount: {type: Number, default:0} });
我想增加和更新每个find
或findOne
查询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) { })