loopbackjs - 用户模型在 loopback3 中给出电子邮件验证错误
问题描述
我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).
现在,如果我删除第一条记录并尝试创建用户,它可以工作。因此,只有第一条记录被插入并为任何唯一的电子邮件发布,我收到验证错误。我不确定为什么会这样。
解决方案
我能够找出问题所在。我一直email
作为一个隐藏的领域。默认情况下, loopback"prohibitHiddenPropertiesInQuery": true
不允许在查询中隐藏属性。结果,在用户验证期间,email
在loopback-juggler/lib/validation.js
. 设置prohibitHiddenPropertiesInQuery
为 false 后,它可以工作。
但是,我仍然不确定为什么它在我的本地服务器上以开发模式工作。prohibitHiddenPropertiesInQuery
默认情况下为 true,因此它也不应该在开发模式下工作。如果有人对此有任何答案,请告诉我。
推荐阅读
- python-3.x - 有没有办法将动态 Cypher 查询存储到 python 变量中?
- excel - 如何设置“自定义”敏感度标签?
- mysql - 如何在mysql中创建程序
- maven - ojdbc 版本和 ucp 版本不同
- python - 如何从视图中创建的函数向字段添加信息?
- python - Python - itertools.groupby
- onelogin - 有没有办法从 OneLogin 的 `profile` 范围内获取 `picture`?
- python - 即使在安装证书时,Python 证书验证也失败
- sql - 如何根据 INPUT 和 OUTPUT 计算资产的运行余额
- r - 一组变量与另一组变量之间双向交互的模型公式