我正在构建一个API,该API允许用户将某些数据记录到数据库(MongoDB)中,但问题是我不断出现以下错误:
UnhandledPromiseRejectionWarning: ValidationError: item validation failed: productName: Path `productName` is required.
这是我的架构:
const mongoose= require('mongoose');
const Schema = mongoose.Schema;
//create Schema
const ItemSchema = new Schema({
productName : {
type : String,
required:true
} ,
description : {
type :String,
default:true
},
supplier : {
type :String,
default:true
},
price : {
type :Number,
default:true
},
date : {
type :Date,
default:Date.now
}
});
module.exports=Inventory=mongoose.model('item',ItemSchema,'inventory');
这是提交帖子的路线:
const express= require('express');
const router = express.Router();
//Items model
const Inventory = require('../../../models/Inventory');
router.post('/',(req,res)=>{
const newInventory= new Inventory({
productName:req.body.productName,
description:req.body.description,
supplier:req.body.supplier,
price:req.body.price,
});
newInventory.save().then(item=>res.json(item))
});
我不知道为什么会引发验证错误!
答案 0 :(得分:1)
这是我解决问题的步骤
首先,我检查了我从请求身体得到的东西
const express= require('express');
const router = express.Router();
//Items model
const Inventory = require('../../../models/Inventory');
console.log(req.body) //checking for content of req.body
router.post('/',(req,res)=>{
const newInventory= new Inventory({
productName:req.body.productName,
description:req.body.description,
supplier:req.body.supplier,
price:req.body.price,
});
newInventory.save().then(item=>res.json(item))
});
我有一个空对象{},这意味着我一开始没有收到任何请求。使用Postman进行测试,我将选项从“表单数据”更改为:
x-www-form-urlencoded
这使我的请求正文充满了数据,错误消失了!