【问题标题】:Loopback 3 crashes when trying to validate a model attached to User base model尝试验证附加到用户基础模型的模型时,Loopback 3 崩溃
【发布时间】:2018-07-15 01:58:02
【问题描述】:

我卡在 API 的验证过程中。我想在将多个对象存储到数据库之前验证它们。我创建了一个函数,我可以在远程方法中调用它来处理验证。

以下功能正常工作,只有帐户验证会引起问题。如果帐户对象无效,我的 Loopback API 会崩溃。很奇怪,因为我对其他 2 个模型做的完全一样?

我尝试了很多东西,但没有任何效果。希望有人能指出我正确的方向。

 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 错误{ 密码:['不能为空'], email: [ '不能为空白', '不能为空白' ] }

/Users/xxx/Development/xxx/xxx-api-v2/common/models/job.js:105 抛出(account.errors); ^ [对象对象] [nodemon] 应用程序崩溃 - 启动前等待文件更改...

【问题讨论】:

  • 你能补充一点上下文吗?然而,我从错误日志中假设您的函数正在尝试执行登录过程并且缺少 password 字段,这可能是问题的原因。

标签: node.js loopbackjs loopback


【解决方案1】:

在您的 account.json 中,您可能提到了 "base": "User",您从用户模型继承了帐户模型。如下所示,在 user.json 中设置了电子邮件和密码属性 required:true,因此环回抛出错误。如果您不希望这两个字段是必填字段,您可以通过设置电子邮件和密码required:false 在 account.json 中更改此设置。Orelse 检查您的请求这两个字段是否具有值。

【讨论】:

    【解决方案2】:

    根据文档(https://loopback.io/doc/en/lb3/Validating-model-data.html),您可以使用isValid 方法

    显式调用验证约束

    每次创建或更新模型实例时,都会自动执行相同的环回。 据我了解account 模型已设置"base": "User",您不能拥有没有密码或电子邮件的用户。

    您能否在调用isValid 函数之前添加account 的外观?

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多