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



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

{
  "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).

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

我能够找出问题所在。我一直email作为一个隐藏的领域。默认情况下,环回具有"prohibitHiddenPropertiesInQuery": true,它不允许查询中的隐藏属性。因此,在用户验证期间,emailloopback-juggler/lib/validation.js 的查询中被忽略。将prohibitHiddenPropertiesInQuery设置为 false 后,它可以工作。

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

最新更新