Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does "through model" mean in loopback?

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.

like image 795
Zhou Nan Avatar asked Aug 02 '15 14:08

Zhou Nan


People also ask

What are models in LoopBack?

A LoopBack model is a JavaScript object with both Node and REST APIs that represents data in backend systems such as databases. Models are connected to backend systems via data sources. You use the model APIs to interact with the data source to which it is attached.

What is persisted model?

PersistedModel is the base class for models connected to persistent data sources such as databases and is also the base class for all built-in models (except Email). It provides all the standard create, read, update, and delete (CRUD) operations and exposes REST endpoints for them.

What is remote method in node JS?

A remote method is a method of a model, exposed over a custom REST endpoint. Use a remote method to perform operations not provided by LoopBack's standard model REST API. Note: The easiest way to define a remote method is by using the command-line remote method generator.


1 Answers

Through model is generally used for many to many data relation. For example you have 3 models:

  1. User with id and username fields;
  2. Team with id and teamName fields;
  3. 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:

  1. In User model definition file (user.json)

"relations": {
  "teams": {
    "type": "hasMany",
    "model": "team",
    "foreignKey": "userId",
    "through": "teamMember"
  }
}
  1. In Team model definition file

"relations": {
  "users": {
    "type": "hasMany",
    "model": "user",
    "foreignKey": "teamId",
    "through": "teamMember"
  }
}
  1. And in 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

like image 59
Mykhailo Zhuk Avatar answered Jan 02 '23 23:01

Mykhailo Zhuk