モデル JSON 内の問題を解決するために、以下に解決策の概要を説明します。ただし、「hasAndBelongsToMany」リレーションシップを使用すると、問題をより簡単に解決できます。その概要も以下に示します。
User.json 内:
"relations": {
"Hobbies": {
"type": "hasMany",
"model": "Hobbie",
"through": "UserHobbie",
"foreignKey": "hobbieId"
}
}
Hobbie.json 内:
"relations": {
"Users": {
"type": "hasMany",
"model": "User",
"through": "UserHobbie",
"foreignKey": "userId"
}
}
UserHobbie.json は次のようになります (「プロパティ」内で userId または hobbieId を定義しないことに注意してください。
{
"name": "UserHobbie",
"plural": "UserHobbies",
"base": "PersistedModel",
"properties": {
"id": {
"type": "String",
"id": true
}
},
"validations": [],
"relations": {
"Users": {
"type": "belongsTo",
"model": "User",
"foreignKey": "userId"
},
"Hobbies": {
"type": "belongsTo",
"model": "Hobbie",
"foreignKey": "hobbieId"
}
},
"acls": [],
"methods": []
}
これを行う簡単な方法は次のとおりです。
UserHobbies モデルを明示的に作成しないでください。ループバックは自動的に結合モデルを作成します。
ユーザー モデル内:
"relations": {
"Hobbies": {
"type": "hasAndBelongsToMany",
"model": "Hobbie"
}
}
あなたのホビーモデルの中で:
"relations": {
"Users": {
"type": "hasAndBelongsToMany",
"model": "User"
}
}
コードでこれを行う場合は、正しいです。ブートストラップのタイミングの問題により、これらの関係がエクスプローラーに表示されません。すぐに別の応答を追加して、それを機能させる方法も示します。