mongoose-delete的findDeleted返回全部数据而非仅软删除数据求助
解决mongoose-delete的findDeleted返回全部数据问题
1. 检查并修正Course模型的插件配置
这是问题的核心原因,必须确保你的Course模型正确引入并配置了mongoose-delete插件。正确的模型配置示例如下:
const mongoose = require('mongoose'); const mongooseDelete = require('mongoose-delete'); const CourseSchema = new mongoose.Schema({ // 你的模型字段,示例: name: String, description: String }); // 应用mongoose-delete插件,关键参数必须配置 CourseSchema.plugin(mongooseDelete, { deletedAt: true, // 可选:开启后记录软删除的时间 overrideMethods: 'all', // 覆盖mongoose默认CRUD方法,确保自动过滤已删除数据 deletedBy: false // 不需要记录删除人时设为false,需要则设为true }); module.exports = mongoose.model('Course', CourseSchema);
如果模型未配置overrideMethods: 'all',或根本未应用该插件,findDeleted方法将无法正确识别软删除文档,导致返回全部数据。
2. 临时替代方案(优先修复模型配置)
若模型配置暂时无法调整,可在控制器中手动过滤已删除数据:
bin(req, res, next) { Course.find({ deleted: true }) .then((course) => { console.log(mutipleMongooseToObject(course)); res.render("me/bin", { course: mutipleMongooseToObject(course) }); }) .catch(next); }
3. 验证数据库数据格式
确认MongoDB中软删除文档的deleted字段是布尔值true,而非字符串或其他类型。字段类型错误会导致findDeleted无法正确匹配目标数据。
内容的提问来源于stack exchange,提问作者HaiToan1998
相关产品推荐
相关产品推荐

