У меня есть моя схема, как показано ниже (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 не указаны обязательные поля. Тело put:
{
"description":{"en":"dsfsdfdsfdsf"}
}
В идеале этот запрос показывает ошибкудля поля video_url Вместо этого он обновляет данные описания Мой ответ PUT:
{
"_id": "5cff88f5ccdf852bf598aedc",
"video_url": {
"en": "http://10.75.12.140:3009/videos"
},
"description": {
"en": "dsfsdfdsfdsf"
}
}
Я хочу, чтобы все поля были обязательными в запросе PUT, и соответствующие проверки также должны быть выполнены на основе схемы.
Нужно ли что-нибудь включить для достижения этой цели?
Спасибо