Loopback: отношение «многие ко многим», не может быть противоположным - PullRequest
0 голосов
/ 25 августа 2018

Я только начал использовать Loopback и определил две модели, которые должны быть связаны тривиальным отношением «многие ко многим».

Первая модель - Customer, вторая модельis Pet.

Каждый клиент может иметь разных питомцев, и каждый питомец может принадлежать разным покупателям.

Я создаю отношение, используя loopback-cli, иопределите его на модели Customer, используя модель Pet в качестве эталона.Единственное изменение в коде:

/* customer.json */
"relations": {
  "Pets": {
    "type": "hasAndBelongsToMany",
    "model": "Pet",
    "foreignKey": ""
  }
}

После этого я нахожу новый набор конечных точек REST для различных действий ресурсов, таких как /customers/{customerId}/pets.

Как мне также получитьпротивоположная «сторона» отношения, которая в терминах REST api была бы /pets/{petId}/customers?

Я не хочу создавать ни новое отношение, ни новую модель.Я просто хочу повторно использовать текущую таблицу MySQL CustomerPet, которая уже содержит необходимую информацию.

Заранее спасибо

1 Ответ

0 голосов
/ 26 августа 2018

Правильный способ справиться с отношением hasAndBelongsToMany - создать его в обоих направлениях с помощью инструмента cli:

  • a Pet hasAndBelongsToMany Клиенты
  • a Клиент hasAndBelongsToMany Домашние животные

Это переводитпри наличии двух разных таблиц в базе данных: PetCustomer и CustomerPet.

Затем REST API работает с обеими таблицами автоматически, когда создается новое отношение между двумя сущностями.Есть два способа сделать это:

  • создание новой связанной сущности, например, путем POSTing нового питомца в /customers/{:customerId}/pets
  • , создавая ссылку между двумя существующими сущностями, например, посредством PUTting(достаточно пустого тела) до /customers/{:customerId}/pets/rel/{:petId}

Полагаю, дублирование таблицы базы данных, содержащей отношение «многие ко многим», - это цена такого гибкого и простого в использовании инструмента, какшлейф.

...