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

使用Mongoose调用deleteOne删除MongoDB数据返回deletedCount为0是什么原因?

问题原因
  • 前端表单的隐藏字段存在多余空格:你提供的前端代码中,nama对应的隐藏输入框value属性,在<%= contact.nama %>模板输出后多了一个尾部空格,最终提交到后端的req.body.nama实际值为izam (末尾携带空格)。你可以从控制台打印的req.body.nama=izam 看到,输出的izam末尾有明显空格。
  • MongoDB查询为精确字符串匹配:数据库中存储的nama字段值为izam(无尾部空格),和提交的带空格字符串不相等,因此deleteOne没有命中任何记录,返回deletedCount: 0。
修复方案
  • 基础修复:删除前端隐藏输入框value属性里的多余空格即可:
<input type="hidden" name="nama" value="<%= contact.nama %>">
  • 兼容优化:后端查询时对传入值做首尾去空格处理,避免类似的空白字符问题:
Contact.deleteOne({ nama: req.body.nama.trim() })
  • 最佳实践:建议改用文档唯一主键_id作为删除条件,避免重名或者字符串匹配误差,数据操作的准确性更高。

内容的提问来源于stack exchange,提问作者Herahadi An

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:24:06