【发布时间】:2016-05-02 19:08:18
【问题描述】:
我有一个用户的 Loopback API,该用户是具有 User 基类的模型。
我还有另一个模型,称为参与者。这表示已注册参加活动的用户。
我希望此参与者需要对用户的引用(外键)。我也想要它,以便用户只能创建一个参与者。最后,当用户创建参与者时,它必须引用用户自己的 ID。我该如何设置?
【问题讨论】:
我有一个用户的 Loopback API,该用户是具有 User 基类的模型。
我还有另一个模型,称为参与者。这表示已注册参加活动的用户。
我希望此参与者需要对用户的引用(外键)。我也想要它,以便用户只能创建一个参与者。最后,当用户创建参与者时,它必须引用用户自己的 ID。我该如何设置?
【问题讨论】:
这对我来说似乎是标准的一对一连接。 Loopback 为此提供了HasOne 和BelongsTo 关系。
根据您的场景,您可以按如下方式定义 Participant 和 MyUser:
我的用户.json
{
"name": "MyUser",
"base": "User",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {},
"remoting": {
"normalizeHttpPath": true
},
"validations": [],
"relations": {
"participant": {
"type": "hasOne",
"model": "Participant",
"foreignKey": "userId"
}
},
"acls": [],
"methods": {},
"mixins": {}
}
参与者.json
{
"name": "Participant",
"base": "PersistedModel",
"idInjection": true,
"properties": {},
"validations": [],
"relations": {
"user": {
"type": "belongsTo",
"model": "MyUser",
"foreignKey": "userId"
}
},
"acls": [],
"methods": {}
}
然后您可以像这样为您的 MyUser 创建一个参与者:
POST /my-users/{id}/participant
如果您尝试为此 MyUser 实例创建另一个 Participant 实例,您将收到以下错误:
错误 (500):HasOne 关系不能创建多个 Participant 实例
【讨论】: