我被困在API的验证过程中。我想先验证多个对象,然后再将它们存储到数据库中。我创建了一个可以在远程方法中调用的函数,以处理验证。
下面的功能可以正常工作,仅帐户验证会引起问题。如果帐户对象无效,则我的Loopback API崩溃了。非常奇怪,因为我对其他两个模型所做的完全相同吗?
我尝试了很多事情,但是没有任何效果。希望有人可以指出正确的方向。
async function validate() {
vehicle.isValid(function(valid) {
if (!valid)
throw (vehicle.errors);
});
repairJob.isValid(function(valid) {
if (!valid){
console.log(repairJob.errors);
throw (repairJob.errors);
}
});
account.isValid(function(valid) {
if (!valid){
console.log(account.errors);
throw (account.errors);
}
});
}
控制台输出
通过http://localhost:3000/explorer浏览REST API 错误{ 密码:['不能为空'], 电子邮件:['不能为空','不能为空']}
/Users/xxx/Development/xxx/xxx-api-v2/common/models/job.js:105 抛出(account.errors); ^ [对象对象] [nodemon]应用程序崩溃-等待文件更改,然后再开始...
答案 0 :(得分:2)
在您的account.json中,您可能已经提到done
,是您从用户模型继承了帐户模型。如下所示,您在user.json中使用了"base": "User"
电子邮件和密码属性,并且因此,环回将引发错误。如果您不希望这两个字段为必填字段,则可以通过设置电子邮件和密码required:true
在account.json中进行更改。请检查您的请求,这两个字段是否有价值。{{3 }}
答案 1 :(得分:0)
根据文档(https://loopback.io/doc/en/lb3/Validating-model-data.html),您可以使用isValid
方法
显式调用验证约束
每次创建或更新模型实例时,相同的环回将自动进行。
据我了解,account
模型已经设置了"base": "User"
,没有密码或电子邮件的用户就无法拥有。
您可以在调用account
函数之前添加isValid
的外观吗?