Node.js创建产品遇ValidationError:nombre字段未传入求助
问题分析与解决
核心问题:控制器参数顺序错误
你的控制器函数参数顺序写反了,Express中间件的标准参数顺序是请求对象(req)在前,响应对象(res)在后。你当前写的async (res, req)会导致req实际指向响应对象,res指向请求对象,根本拿不到req.body里的请求数据,最终触发Mongoose的必填字段验证错误。
修复步骤
修正控制器参数顺序
把newProduct函数的参数调换顺序即可:export const newProduct = async (req, res) => { const product = await productModel.create(req.body); res.status(201).json({ success: true, data: product, }); };额外检查(确保万无一失)
- 确认你的Express项目已配置JSON请求体解析中间件:
app.use(express.json()); - 在Postman发送请求时,务必设置请求头为
Content-Type: application/json,且请求体是合法的JSON格式,比如:{ "nombre": "测试产品", // 其他必填字段 }
- 确认你的Express项目已配置JSON请求体解析中间件:
验证结果
修正参数顺序后重新发送POST请求,req.body就能正确获取到你传入的产品数据,Mongoose的验证会通过,产品创建流程正常执行。
内容的提问来源于stack exchange,提问作者John James
相关产品推荐
相关产品推荐

