node.js - 环回:在更新中使用 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
});
我怎么能设置我在更新而不是在创建中验证。
解决方案
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);
}
推荐阅读
- makefile - Makefile 中缺少依赖项
- oracle - 我如何在 Pivot 的 IN 子句中传递 select sql
- json - 从 JSON API 显示 MapView 标记
- java - 在 nCipher HSM 配置上禁用 KeyPairGenerator.getInstance("RSA", "nCipherKM") RSA 算法时出错
- wagtail - 回溯鹡鸰页面
- php - WordPress 调用未定义函数 in_category()
- c# - 动态创建控件时,RadioButton 上的已检查事件命令绑定不起作用
- jquery - ajax 调用总是抛出 xhr.send(options.hascontent && options.data null) 错误
- webpack - 如何构建需要不同 webpack 版本的不同项目?
- asp.net - 如果然后逻辑无法执行代码块