hasManyThrough полиморфное отношение - PullRequest
0 голосов
/ 25 марта 2019

У меня есть модель student, модель favorite и модели мультимедиа, например, music, video и т. Д. Я хочу реализовать hasManyThrough ploymorphic отношение, в котором сквозная модель равна favorite, а затем сохраняетэти фавориты в favorite таблице в моем случае mongoDB.Я использую loopback3, и его документация не ясна по этой теме. Любой лидер?

1 Ответ

0 голосов
/ 25 марта 2019

Ваши модели будут выглядеть так:

общий / модель / student.json

{
  "name": "Student",
  "base": "User",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {

  },
  "validations": [],
  "relations": {
    "favorites": {
      "type": "hasMany",
      "model": "Favorite",
      "foreignKey": "studentId"
    },
    "videos": {
      "type": "hasMany",
      "model": "Video",
      "foreignKey": "studentId",
      "through": "Favorite",
      "keyThrough": "favoriteId"
    },
    "musics": {
      "type": "hasMany",
      "model": "Music",
      "foreignKey": "studentId",
      "through": "Favorite",
      "keyThrough": "favoriteId"
    }
  },
  "acls": [],
  "methods": {}
}

общая / модель / video.json

{
  "name": "Video",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {

  },
  "validations": [],
  "relations": {
    "favorites": {
      "type": "hasMany",
      "model": "Favorite",
      "foreignKey": "videoId"
    },
    "students": {
      "type": "hasMany",
      "model": "Student",
      "foreignKey": "videoId",
      "through": "Favorite",
      "keyThrough": "studentId"
    }
  },
  "acls": [
  ],
  "methods": {}
}

общая / модель / favorite.json

{
  "name": "Favorite",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {

  },
  "validations": [],
  "relations": {
    "student": {
      "type": "belongsTo",
      "model": "Student",
      "foreignKey": "studentId"
    },
    "video": {
      "type": "belongsTo",
      "model": "Video",
      "foreignKey": "videoId"
    },
    "music": {
      "type": "belongsTo",
      "model": "Music",
      "foreignKey": "musicId"
    }
  },
  "acls": [],
  "methods": {}
}

Затем вам просто нужно ПОСТАВИТЬ новый элемент Favorite с атрибутами studentId и videoId, чтобы добавить новое отношение.

РЕДАКТИРОВАТЬ: Добавлен music.json

общая / модель / music.json

{
  "name": "Music",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {

  },
  "validations": [],
  "relations": {
    "favorites": {
      "type": "hasMany",
      "model": "Favorite",
      "foreignKey": "musicId"
    },
    "students": {
      "type": "hasMany",
      "model": "Student",
      "foreignKey": "musicId",
      "through": "Favorite",
      "keyThrough": "studentId"
    }
  },
  "acls": [
  ],
  "methods": {}
}
...