Модель пользователя, сообщающая об ошибке проверки электронной почты в loopback3 - PullRequest
0 голосов
/ 11 июня 2019

Я создал модель 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, создается только первый раз. В следующий раз, даже если я дам другой идентификатор электронной почты, я получу сообщение об ошибке проверки электронной почты следующим образом:

The 'MyUser' instance is not valid. Details: электронная почта Email already exists (value: undefined).

Теперь, если я удаляю первую запись и пытаюсь создать пользователя, она работает. Итак, вставляется только 1-я запись и публикуется, что для любого уникального электронного письма также появляется ошибка проверки. Я не уверен, почему это происходит.

1 Ответ

0 голосов
/ 11 июня 2019

Мне удалось выяснить проблему. Я сохранил email как скрытое поле. loopback имеет "prohibitHiddenPropertiesInQuery": true по умолчанию, что не позволяет скрытые свойства в запросе. В результате во время проверки пользователя email было проигнорировано в запросе в loopback-juggler/lib/validation.js. Если для prohibitHiddenPropertiesInQuery установлено значение false, оно работает.

Однако я все еще не уверен, почему он работал в режиме разработки на моем локальном сервере. prohibitHiddenPropertiesInQuery по умолчанию имеет значение true, поэтому оно не должно работать и в режиме разработки. Если у кого-нибудь есть ответ на этот вопрос, пожалуйста, дайте мне знать.

...