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

时间:2015-10-03 21:24:05

标签: node.js mongodb mongoose

我正在使用mongoose-delete插件。

我想构建一个简单的mongoose middleware,因此我将LinkedList添加到该架构的每个{deleted:false}查询中。

find

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

2 个答案:

答案 0 :(得分:11)

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

MySchema.pre('find', function() {
    this.where({deleted: false});
});

答案 1 :(得分:0)

我正在尝试通过以下方式实现同​​一件事:

MySchema.pre('find', function() {
  this.where({deleted: false});
});

由JohnnyHK提供。它可以工作,但是在mongoose-delete中直接有一个内置解决方案。它允许您覆盖一种或多种方法,这将从结果中排除已删除的文档。更多信息here

例如,要实现Facundo Chambo目标,您可以覆盖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, overrideMethods: ['find']});

只有带有{deleted: false}的文档才会出现在.find()方法的结果中。