在mongoose预查找中间件上添加条件

Fac*_*mbo 3 mongoose mongodb node.js

我正在使用mongoose-delete插件.

我想构建一个简单的mongoose中间件,所以我添加{deleted:false}find该架构的每个查询.

var mongoose = require('mongoose'),
    mongooseDelete = require('mongoose-delete'),
    Schema = mongoose.Schema;

var MySchema = new Schema({
  name: {type: String, required: true}
});

MySchema.plugin(mongooseDelete, {deletedAt: true, deletedBy: true});

MySchema.pre('find', function (next){
  // I want to add {deleted: false} to the queries conditions
});
Run Code Online (Sandbox Code Playgroud)

我应该如何实现预先找到的中间件?

Joh*_*yHK 12

在预先找到的中间件中,thisQuery对象,因此您可以{deleted: false}使用以下命令添加到查询:

MySchema.pre('find', function() {
    this.where({deleted: false});
});
Run Code Online (Sandbox Code Playgroud)

  • @greymatter 它不会清除现有查询,而是将 `deleted: false` 查询词_adds_ 添加到现有查询中。刚刚用猫鼬 5.3.7 重新测试了它。 (3认同)