React前端调用Node+Mongoose接口报必填字段验证失败Postman正常
问题现象
React前端向基于Node+Mongoose搭建的后端服务发送POST请求创建反馈数据时,触发Mongoose校验报错;但使用Postman测试同一后端API接口时可正常运行,无校验问题。
报错信息
Feedback validation failed: receiver: Path
receiveris required., classCodes: PathclassCodesis required., level: Pathlevelis required., content: Pathcontentis required.
相关代码
后端API控制器代码
exports.createFeedback = async (req, res) => { try { console.log('data from frontend', req.body); const feedback = await new FeedbackSchema({ receiver: req.body.receiver, teacher: req.userId, classCodes: req.body.classCodes, level: req.body.level, content: req.body.content, send: req.body.send, }).save(); return res.json({ feedback, message: 'Feedback Created' }); } catch (error) { console.log(error.message); res.json('Failed to create feedback!'); } };
Feedback Schema定义代码
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const FeedbackSchema = new Schema({ receiver: { type: Schema.Types.ObjectId, ref: 'User', required: true, }, teacher: { type: Schema.Types.ObjectId, ref: 'User', }, level: { type: Schema.Types.ObjectId, ref: 'Level', required: true, }, classCodes: { type: Schema.Types.ObjectId, ref: 'ClassCode', required: true, }, content: { type: String, required: true, maxlength: 300, }, note: { type: String, maxlength: 300, }, createdAt: { type: Date, default: Date.now(), }, }); module.exports = { FeedbackSchema: mongoose.model('Feedback', FeedbackSchema), };
已完成排查
- 前端发送请求前已打印
content、level、receiver、classCodes参数,确认值存在 - 后端接口中通过
console.log打印req.body,确认已接收到上述字段,但依然触发必填路径验证失败报错
说明:无需关注ratings schema相关内容
现有佐证材料
- 后端日志截图
- 前端日志截图
- Postman正常调用截图
内容的提问来源于stack exchange,提问作者Jonh
相关产品推荐
相关产品推荐

