Опция runValidators не работает для findByIDAndUpdate или findOneAndUpdate с использованием mongoose - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь проверить обновление документа в 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 () с валидаторами пользовательских функций (как моя выше), но яне понимаю, почему это не должно быть.

Кто-нибудь еще сталкивался с проблемой?

Заранее спасибо за любые ответы.

...