环回多个一对多关系

时间:2016-10-06 00:38:30

标签: javascript loopbackjs

我开始用Loopback弄脏手了,我对模型关系声明感到有些困惑。

示例模型

Person

  • firstname
  • lastname
  • idcountrybirth // references country table
  • idcountrynationality // references country table again

请注意,idcountrybirthidcountrynationality可以为Person

的每个实例引用不同的县

上述

的关系

对于2个国家/地区的每个字段,我都在寻找hasA的内容,但这种关系并不存在。

我需要为国家人物设置什么样的关系?

这是我当前ERD的一个示例模型,我试图以Loopback为基础进行返工。

screenshot of ERD diagram showing one to many relationships on 2 fields in Person table, related with Country table

1 个答案:

答案 0 :(得分:1)

您可以为每个使用hasOne关系。不要将idcountrybirthidcountrynationality定义为属性,因为它们都代表PersonCountry之间的关系。

{
  "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关系;)