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

Node.js创建产品遇ValidationError:nombre字段未传入求助

问题分析与解决

核心问题:控制器参数顺序错误

你的控制器函数参数顺序写反了,Express中间件的标准参数顺序是请求对象(req)在前,响应对象(res)在后。你当前写的async (res, req)会导致req实际指向响应对象,res指向请求对象,根本拿不到req.body里的请求数据,最终触发Mongoose的必填字段验证错误。

修复步骤

  1. 修正控制器参数顺序
    把newProduct函数的参数调换顺序即可:

    export const newProduct = async (req, res) => {
        const product = await productModel.create(req.body);
        res.status(201).json({
            success: true,
            data: product,
        });
    };
    
  2. 额外检查(确保万无一失)

    • 确认你的Express项目已配置JSON请求体解析中间件:
      app.use(express.json());
      
    • 在Postman发送请求时,务必设置请求头为Content-Type: application/json,且请求体是合法的JSON格式,比如:
      {
          "nombre": "测试产品",
          // 其他必填字段
      }
      

验证结果

修正参数顺序后重新发送POST请求,req.body就能正确获取到你传入的产品数据,Mongoose的验证会通过,产品创建流程正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:11:13