@quality_3011
full-stack web-developer

Не валидируется при Update mongodb + mongoose, что делаю не так...?

Нужно сделать валидацию при изменении данных модели... При сохранении валидация проходит нормально, но при обновлении никак не реагирует..
Что пробовал:
1. дописывал модели
var ApplianceSchema = new mongoose.Schema({
  created: Date,
  updated: Date,
  name: {
    type: String,
    required: [true, 'Appliance name is required'],
    validate: {
      validator: validateUniqueName,
      message : 'Appliance name already taken'
    },
    get: escapeProperty
  }
});
----  ВОТ ЭТОТ КУСОК
ApplianceSchema.pre('findOneAndUpdate', function(next) {
  this.options.runValidators = true;
  next();
});
---  КОНЕЦ

mongoose.model('Appliance', ApplianceSchema);


2. Дописывал опцию валидейт тру в контроллере: (код с коментариями .. т.к пробовал уже разные варианты.. в том числе и с разными опциями... работа была везде одинаковая...
/*  Appliance.findOne({
    _id: req.params.id
  }).exec(function (err, appliance) {*/
  //  if (!err && appliance) {
      var newAppliance = Appliance.findOneAndUpdate({
        _id: appliance._id
      }, {
        $set: req.body
      }, {
        runValidators: true
       // multi: false,
        //upsert: false
      }, function (err, appliance) {
        if (err) {
          res.status(500).send(e.validationErrors(err));
        }
        res.jsonp(newAppliance);
      });
 //   }
 // });


Буду благодарен если кто то подскажет как правильно или в каком направлении копать! Спасибо
  • Вопрос задан
  • 393 просмотра
Решения вопроса 1
@quality_3011 Автор вопроса
full-stack web-developer
проблема решена - причина отказа обновления - потеря контекста.
Для того чтобы обновить данные укажите : context: 'query' в опциях.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы