我正在使用mongoose-delete插件。
我想构建一个简单的mongoose middleware,因此我将LinkedList
添加到该架构的每个{deleted:false}
查询中。
find
我应该如何实现预先找到的中间件?
答案 0 :(得分:11)
在预查找中间件中,this
是Query
对象,因此您可以使用以下内容将{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()
方法的结果中。