环回:在更新

时间:2018-08-13 12:31:26

标签: node.js loopbackjs strongloop

在我的应用程序中的某个时刻,我想在更新现有实例之前验证请求数据,因此我正在使用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中进行验证。

1 个答案:

答案 0 :(得分:0)

Loopback认为您的用户是一个新的模型实例。结果,验证失败(新实例不应具有ID,并且数据库中存在使用此电子邮件的“另一个”用户)。

使用持久选项告诉环回您的用户已被保存在数据库中。

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

环回在他的Modle.find()方法中使用的几乎相同的方法将数据从数据库转换为环回模型实例:

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

var obj;
try {
  obj = new Model(data, ctorOpts);
} catch (err) {
  return callback(err);
}