Node Express中Post API调用出现Product Validation Failed错误
问题解决:Post接口触发Mongoose验证失败错误
错误信息翻译
产品验证失败:category:路径
category是必填项。,price:请输入产品价格,description:请输入产品描述,name:路径name是必填项。
核心原因与解决方案
1. Express未配置JSON请求体解析中间件
Express默认不会自动解析JSON格式的请求体,导致req.body为空对象,执行Product.create(req.body)时所有必填字段都被判定为缺失。
修复步骤:
在你的Express主入口文件(如app.js/server.js)中,在路由注册前添加以下中间件:
const express = require('express'); const app = express(); // 解析JSON格式请求体 app.use(express.json()); // 可选:解析URL编码格式的请求体(若需支持form-data) app.use(express.urlencoded({ extended: true })); // 注册路由(确保在中间件之后) app.use('/api', require('./routes/routes.js'));
2. 模型字段拼写错误
检查models.js中的stock字段,你将required拼写成了requird,导致该字段的必填验证失效:
// 错误写法 stock:{ type:Number, requird:true, default:1 },
修正为:
stock:{ type:Number, required:true, default:1 },
Postman请求验证
发送POST请求时需确保:
- 请求方法选择
POST - 请求URL与路由配置匹配(如
http://localhost:3000/api/product/new) - 请求体选择
raw->JSON格式,传入完整必填字段,示例:
{ "name": "测试手机", "description": "一款高性能智能手机", "price": 2999, "category": "电子产品", "stock": 50 }
内容的提问来源于stack exchange,提问作者Malik Naveed
相关产品推荐
相关产品推荐

