Loopback: используйте isValid () в обновлении

В какой-то момент в моем приложении я хочу проверить данные запроса перед обновлением существующего экземпляра, поэтому я использую метод isValid (). Но это не подтверждает валидность из-за уникальности атрибута.

const userInfo = {
  id: data.id,
  name: data.name,
  email: data.email,
  password: data.password
};
const instance = new app.models.User(userInfo);
instance.isValid(valid => {
  console.log(valid); //false, "email" is not unique and "id" should be absent
});

Как я могу установить, что я проверяю в обновлении не в create.

0
задан 13 August 2018 в 15:31

1 ответ

Loopback думает, что ваш пользователь является новым экземпляром модели. В результате проверка не выполняется (новый экземпляр не должен иметь идентификатор, а «другой» пользователь с этими письмами существует в вашей базе данных).

Используйте устаревшие параметры, чтобы сообщить loopback, что ваш пользователь был сохранен в базе данных ранее:

new app.models.User(userInfo, {persisted: true})

Почти тот же подход loopback использует в своем методе Modle.find () для преобразования данные из базы данных в экземпляр модели loopback:

var ctorOpts = {
  fields: query.fields,
  applySetters: false,
  persisted: true,
};

var obj;
try {
  obj = new Model(data, ctorOpts);
} catch (err) {
  return callback(err);
}
0
ответ дан 15 August 2018 в 17:00
  • 1
    Все еще не работает, работает ли это с вами? – Ahmed Ismail 14 August 2018 в 21:15
  • 2
    Да, я написал почти ваш пример, чтобы проверить. Ошибки одинаковы? – Maxim Sharai 15 August 2018 в 13:03

Другие вопросы по тегам:

Похожие вопросы: