我的模式如下(video_schema.js):
var Video_schema = new Schema({
video_url: {
type: Map,
of: mongoose.SchemaTypes.Url,
required: true
},
description: {
type: Map,
of: String,
required: true
},
created_date_time:{type: Date, default:Date.now},
modified_date_time:{type:Date, default:Date.now}
},{
versionKey: false
});
module.exports = mongoose.model('video', Video_schema);
以下是我用于更新数据的代码(video.js):
var video = require('../models/video_schema');
router.put('/:id', async(req, res)=>{
await video.findOneAndUpdate(req.params.id,{$setOnInsert: req.body},{upsert: true,'new': true,runValidators: true,setDefaultsOnInsert: true}, function (err, newvideo) {
if (err) {
res.status(HttpStatus.BAD_REQUEST).send(err.message);
} else {
res.status(HttpStatus.OK)
.send(newvideo)
}
});
});
我正在尝试使用PUT请求更新数据,但是它没有验证架构,并且如果未在PUT请求主体中指定必填字段,也不会给出错误 我的身体是:
{
"description":{"en":"dsfsdfdsfdsf"}
}
理想情况下,此请求显示video_url字段的错误 相反,它正在更新描述数据 我的PUT回应:
{
"_id": "5cff88f5ccdf852bf598aedc",
"video_url": {
"en": "http://10.75.12.140:3009/videos"
},
"description": {
"en": "dsfsdfdsfdsf"
}
}
我希望在PUT请求中需要所有字段,并且也要根据模式进行相应的验证。
我需要启用任何功能来实现此目的吗?
谢谢