runValidators = true в findOneAndUpdate не проверяет схему перед обновлением данных - PullRequest
0 голосов
/ 12 июня 2019

У меня есть моя схема, как показано ниже (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, и соответствующие проверки также должны быть выполнены на основе схемы.

Нужно ли что-нибудь включить для достижения этой цели?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...