Теги отношения в петле 3 - PullRequest
0 голосов
/ 19 ноября 2018

В Loopback, как я могу создать теги?Например, есть проекты

{
  id,
  name
}

и существует коллекция тегов с похожей моделью. Теперь проекту необходимо иметь несколько тегов, и один и тот же тег можно использовать в нескольких проектах.

ДляНапример, при создании проекта пользователь может вводить уже существующие теги или новые теги, и они должны быть добавлены в проект.

Я не могу найти точное отношение, которое мне нужно, в рамках обратной связи.Как ты это делаешь?

1 Ответ

0 голосов
/ 19 ноября 2018

TLDR

  1. CREATE TABLE ProjectTag (id AUTO INCREMENT PRIMARY KEY, project_id INTEGER, tag_id INTEGER);

  2. $ lb relation Project has and belongs to many Tag

  3. POST localhost:3000/api/Project

  4. POST http://localhost:3000/api/Projects/{ProjectId}/Tags

На первом шаге создается таблица, которая связывает Projects с Tags.

Второй создает отношение в loopback и изменяет ваш Project.json relations

Третий создает новый проект

И четвертый Создает новый тег для этого проекта. В REST explorer есть еще несколько опций.

EDIT

Чтобы добавить тег, который уже существует в проекте, используйте PUT /Projects/{PROJECT_ID}/Tags/rel/{TAG_ID}

Подробнее 1048 *

https://loopback.io/doc/en/lb3/HasAndBelongsToMany-relations.html https://loopback.io/doc/en/lb3/HasManyThrough-relations.html

hasAndBelongsToMany по сути то же самое, что hasManyThrough, , за исключением того, что неявно создается сквозная модель.

Для реализации HasManyAndBelongsToMany должна существовать таблица, которая отображает одно на другое. Если вы добавите отношение к модели проекта, оно будет называться ProjectTag (которое я определю как модель обратной связи, потому что я не знаю вашу RDBMS).

{
  "name": "ProjectTag",
  "properties": {
    "projectId": {
      "type": "Number"
    },
    "tagId": {
      "type": "Number"
    },
    "id": {
      "type": "Number"
    }
  }
}

Вы можете создать отношение с помощью lb relation. Который поместит это в одну из ваших моделей. (Моя модель была stackoverflow1)

"stackoverflow2s": {
  "type": "hasAndBelongsToMany",
  "model": "stackoverflow_2",
  "foreignKey": "",
  "options": {
    "nestRemoting": true
  }
}

Например, при создании проекта пользователь может вводить уже существующие теги или новые теги, и они должны быть добавлены в проект.

Сначала вам нужно будет создать проект POST localhost:3000/api/Project

Затем вы можете использовать POST http://localhost:3000/api/Projects/{ProjectId}/Tags, чтобы добавить теги к этому конкретному объекту.

...