Я пытаюсь проверить обновление документа в mongoose.
У меня есть проверка проверки для поля следующим образом:
reason: {
type: String,
enum: ['Finished', 'Incomplete'],
required: function() { return this.status == 'Inactive' }
}
Поле status
являетсяenum следующим образом:
status: {
type: String,
enum: ['Active', 'Inactive'],
required: true
}
У меня есть вызов findByIdAndUpdate в экспресс-маршруте, который использует опцию runValidators: true
, но если я обновляю один из моих документов, например {status: 'Inactive' }
без определения reason
, онвсе еще обновляется и не выдает ошибку ValidationError:
router.put('/:id', (req, res) => {
var id = req.params.id;
ItemInstance.findByIdAndUpdate(id, req.body, {runValidators: true}, (err, itemInstance) => {
if(err)
{
if(err.name == 'CastError')
return res.status(404).send({message: `Cannot find ItemInstance with id ${id}`, error: err})
else
return res.status(500).send(err)
}
return res.status(400).send({message: 'ItemInstance Found and Updated', itemInstance: itemInstance});
});
});
Не могу найти много информации о том, работает ли опция runValidators
в функциях update () с валидаторами пользовательских функций (как моя выше), но яне понимаю, почему это не должно быть.
Кто-нибудь еще сталкивался с проблемой?
Заранее спасибо за любые ответы.