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