我开始用Loopback弄脏手了,我对模型关系声明感到有些困惑。
Person
firstname
lastname
idcountrybirth // references country table
idcountrynationality // references country table again
请注意,idcountrybirth
和idcountrynationality
可以为Person
对于2个国家/地区的每个字段,我都在寻找hasA
的内容,但这种关系并不存在。
我需要为国家人物设置什么样的关系?
这是我当前ERD的一个示例模型,我试图以Loopback为基础进行返工。
答案 0 :(得分:1)
您可以为每个使用hasOne
关系。不要将idcountrybirth
和idcountrynationality
定义为属性,因为它们都代表Person
和Country
之间的关系。
{
"name": "Person",
"base": "PersistedModel",
"idInjection": true,
"properties": {
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
}
},
"validations": [],
"relations": {
"birthCountry": {
"type": "hasOne",
"model": "Country",
"foreignKey": "birthCountryId"
},
"nationality": {
"type": "hasOne",
"model": "Country",
"foreignKey": "nationalityCountryId"
},
},
"acls": [],
"methods": []
}
然后,使用REST API
POST /api/Person
{
"firstname": "R.",
"lastname" : "Federer"
}
然后,给他一个出生国
POST /api/Person/1/birthCountry
{
"name": "Switzerland"
}
和国籍
POST /api/Person/1/nationality
{
"name": "South Africa"
}
有些人有多个国籍,因此您可以使用hasMany
关系而不是hasOne
来建立nationality
关系;)