You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:17:29