我已经创建了一个基于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": {}
}它在我的本地服务器上运行得很好。但当我将其托管在亚马逊ec2上时,只创建了第一次用户。下一次,即使我给出了不同的电子邮件id,我也会得到如下的电子邮件验证错误:
The 'MyUser' instance is not valid. Details:电子邮件Email already exists (value: undefined).
现在,如果我删除第一条记录,并尝试创建用户,它可以工作。所以,只有第一个记录是插入和发布的任何独特的电子邮件也,我得到了验证错误。我不确定为什么会发生这种情况。
发布于 2019-06-12 02:57:37
我能够弄清楚问题所在。我保留了email作为隐藏字段。默认情况下,loopback具有"prohibitHiddenPropertiesInQuery": true,这不允许在查询中隐藏属性。因此,在用户验证期间,在loopback-juggler/lib/validation.js中的查询中会忽略email。在将prohibitHiddenPropertiesInQuery设置为false时,它可以正常工作。
然而,我仍然不确定为什么它在我的本地服务器上以开发模式工作。默认情况下,prohibitHiddenPropertiesInQuery是真的,所以它不应该也在开发模式下工作。如果有人对此有任何答案,请一定要让我知道。
https://stackoverflow.com/questions/56549302
复制相似问题