Reputation: 151
When defining relation using "slc loopback:relation", it prompts about "through model" at the last line.
? Select the model to create the relationship from: CoffeeShop
? Relation type: has many
? Choose a model to create a relationship with: Reviewer
? Enter the property name for the relation: reviewers
? Optionally enter a custom foreign key:
? Require a through model? No
Could someone briefly explain what a through model is? Some example will be greatly appreciated.
Upvotes: 15
Views: 4372
Reputation: 777
Through model is generally used for many to many
data relation.
For example you have 3 models:
User
with id
and username
fields;Team
with id
and teamName
fields;TeamMember
with userId
and teamId
fields. User
can be a member of many Team
and Team
can have many User
. And the relation of User
and Team
will be stored in TeamMember
.
To create many to many
relations in loopback you have to add relation
property to your model definition files:
User
model definition file (user.json)"relations": {
"teams": {
"type": "hasMany",
"model": "team",
"foreignKey": "userId",
"through": "teamMember"
}
}
Team
model definition file"relations": {
"users": {
"type": "hasMany",
"model": "user",
"foreignKey": "teamId",
"through": "teamMember"
}
}
TeamMember
model definition file"relations": {
"user": {
"type": "belongsTo",
"model": "user",
"foreignKey": "userId"
},
"team": {
"type": "belongsTo",
"model": "team",
"foreignKey": "teamId"
}
}
You can also find information about "through model" on StrongLoop's docs
Upvotes: 17