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