我已基于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).
现在,如果我删除第一条记录并尝试创建用户,它将起作用。因此,仅插入第一条记录,并将其发布给任何唯一的电子邮件,我也收到验证错误。我不确定为什么会这样。
答案 0 :(得分:0)
我能够找出问题所在。我将email
保留为隐藏字段。默认情况下,回送具有"prohibitHiddenPropertiesInQuery": true
,它不允许查询中具有隐藏属性。结果,在用户验证期间,email
的查询中忽略了loopback-juggler/lib/validation.js
。将prohibitHiddenPropertiesInQuery
设置为false后,它可以工作。
但是,我仍然不确定为什么它在本地服务器上以开发模式运行。 prohibitHiddenPropertiesInQuery
默认为true,因此它也不应该在开发模式下工作。如果有人对此有任何答案,请告诉我。