在猫鼬的每个查找查询中添加(注入)条件

时间:2018-09-30 09:41:48

标签: node.js mongodb mongoose

我想为所有类似查找的查询添加(注入)条件,所谓查找类似的查询是指其中具有查找内容的查询,例如findfindOne,{{ 1}},findOneAndUpdate和...

例如,我的代码中包含以下查询:

findByIdAndUpdate

但我希望运行此查询:

model.findOne({a: 1})

我的目的是在每个查询中都使用model.findOne({a: 1, b: 2}) ,所以我不想在每个查询中都键入它。

我尝试使用{b:2}钩子,但失败了。

我这样使用钩子:

schema.pre('find', function(){})

但是console.log显示查询没有更改。

1 个答案:

答案 0 :(得分:1)

findOne示例:

AuthorSchema.pre('findOne', function(next) {
  // Put your logic here for whatever you want to "decorate" ...
  let conditions = this.getQuery() // get the current conditions
  conditions._id = "5b80f96e9fceda195ba853af" // Change to whatever you want
  this._conditions = conditions  // Set the new conditions
  next();
});

会做到这一点:

var result = Author.findOne({_id: "5b7fa665844b5ebfad064b1c" })
.populate("books")
.exec()

实际上返回对象ID为5b80f96e9fceda195ba853af的记录