用户模型在loopback3中给出电子邮件验证错误

时间:2019-06-11 17:55:07

标签: loopbackjs loopback

我已基于MyUser模型创建了模型User,如下所示:

{
  "name": "MyUser",
  "base": "User",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "ownerRelations": true,
  "emailVerificationRequired": true,
  "hidden": [
    "email",
    "emailVerified"
  ],
  "properties": {
    "firstName": {
      "type": "string",
      "required": true
    },
    "lastName": {
      "type": "string",
      "required": true
    },
    "email": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "accessTokens": {
      "type": "hasMany",
      "model": "CustomAccessToken",
      "polymorphic": {
        "foreignKey": "userId",
        "discriminator": "principalType"
      },
      "options": {
        "disableInclude": true
      }
    }
  },
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    },
    {
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW",
      "property": "create"
    }
  ],
  "methods": {}
}

它在我的本地服务器上完美运行。但是,当我将其托管在AWS ec2上时,只会创建首次用户。下次即使我提供了不同的电子邮件ID,也会收到如下电子邮件验证错误:

The 'MyUser' instance is not valid. Details:电子邮件Email already exists (value: undefined).

现在,如果我删除第一条记录并尝试创建用户,它将起作用。因此,仅插入第一条记录,并将其发布给任何唯一的电子邮件,我也收到验证错误。我不确定为什么会这样。

1 个答案:

答案 0 :(得分:0)

我能够找出问题所在。我将email保留为隐藏字段。默认情况下,回送具有"prohibitHiddenPropertiesInQuery": true,它不允许查询中具有隐藏属性。结果,在用户验证期间,email的查询中忽略了loopback-juggler/lib/validation.js。将prohibitHiddenPropertiesInQuery设置为false后,它可以工作。

但是,我仍然不确定为什么它在本地服务器上以开发模式运行。 prohibitHiddenPropertiesInQuery默认为true,因此它也不应该在开发模式下工作。如果有人对此有任何答案,请告诉我。

相关问题