TLDR
CREATE TABLE ProjectTag (id AUTO INCREMENT PRIMARY KEY, project_id INTEGER, tag_id INTEGER)
;
$ lb relation
Project
has and belongs to many
Tag
POST localhost:3000/api/Project
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
, чтобы добавить теги к этому конкретному объекту.