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

使用Mongoose向MongoDB插入表单数据时字段缺失异常排查

问题:Mongoose插入数据时product_Description字段缺失的原因及解决办法

你遇到的问题其实很典型——JavaScript的大小写敏感性导致的字段不匹配。

从你提供的日志就能直接找到根源:

console.log(req.body); { product_Name: 's', product_description: 'ydtdh', product_price: '232', product_logo: 'error.png' }
console.log(newproduct) { _id: 5a6ffc303df3d62e0451dd12, product_Name: 's', product_price: 232, product_logo: 'error.png' }

前端表单提交过来的描述字段是product_description(注意是小写的d),但你在创建newproduct实例的时候,试图读取的是req.body.product_Description(大写的D)。在JavaScript里,这两个是完全不同的对象属性名,所以后端自然读不到这个字段的值,最终插入数据库时就会缺失。

解决办法(二选一即可)

  1. 修改后端代码,适配前端的字段名
    把创建实例时的字段读取语句改成和前端一致的小写d:
var newproduct = new product({
  product_Name : req.body.product_Name , 
  product_Description : req.body.product_description , // 这里改为匹配前端的字段名
  product_price : req.body.product_price, 
  product_logo : req.body.product_logo 
});
  1. 修改前端表单,适配后端的Schema定义
    如果你希望保持后端Schema的命名风格,可以调整前端表单中对应输入框的name属性,从product_description改为product_Description,这样后端就能直接用req.body.product_Description获取到值了。

小提示

JavaScript对变量、对象属性的大小写是严格区分的,前后端交互时一定要保证字段名的大小写完全一致,不然很容易出现这种“明明传了值却读不到”的问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:22:28