MOKKY / Документация
  • 👋Добро пожаловать в Mokky
  • Вступление
    • 👀С чего начинать?
    • 🔏Регистрация
    • 🗂️Как создать проект
    • 📄Как создать ресурс
    • ⚒️Примеры на React/JS
  • Обращение к ресурсам
    • 📃Обращение к API
    • 🔍Фильтрация
      • Простой поиск
      • Расширенная фильтрация
      • По нескольким параметрам
      • По нескольким значениям
      • Глубокая фильтрация
    • ↕️Сортировка
    • 🔢Пагинация
    • 📄Выборка полей
    • 🔛Связь двух ресурсов
  • Доп. настройки
    • JSON-генератор
    • Аутентификация
      • Защита ресурсов
      • Пример кода
      • Обращение к защищенным ресурсам
      • Получение авторизованного пользователя
    • Загрузка файлов
    • Инкрементировать поле
    • Разрешённые методы
    • Фейковый статус
Powered by GitBook
On this page
  1. Обращение к ресурсам

Связь двух ресурсов

PreviousВыборка полейNextJSON-генератор

Last updated 1 year ago

В Mokky можно сделать связь One-to-One между двумя ресурсами. Это бывает полезно, когда мы хотим, например, вместе со списком новостей выводить и самих авторов, которые хранятся в другом ресурсе.

Представим, что у нас есть два ресурса:

/users
[
  {
    "id": 1,
    "name": "Вася Пупкин"
  },
  {
    "id": 2,
    "name": "Акакий Арачимарович"
  }
]
/orders
[
  {
    "id": 1,
    "name": "Хлеб",
    "user_id": 1,
  },
  {
    "id": 2,
    "name": "Вода",
    "user_id": 1,
  },
  {
    "id": 3,
    "name": "Котлеты с пюрешкой",
    "user_id": 2,
  }
]

И мы хотим сделать так, что при получении всех заказов (orders), возвращались вместе с заказами сами пользователи (вместо user_id).

Для этого, в самом запросе добавляем параметр _relations в который можем через запятую передать все связи.

Если в вашем объекте есть несколько связей, то в _relations достаточно их перечислить так: _relations=users,posts,items

В нашем случае достаточно указать так:


https://XXX.mokky.dev/orders?_relations=users

И в итоге нам вернётся следующий ответ:

Ответ от сервера
[
  {
    "id": 1,
    "name": "Хлеб",
    "user": {
      "id": 1,
      "name": "Вася Пупкин"
    },
  },
  {
    "id": 2,
    "name": "Вода",
    "user": {
      "id": 1,
      "name": "Вася Пупкин"
    },
  },
  {
    "id": 3,
    "name": "Котлеты с пюрешкой",
    "user": {
      "id": 2,
      "name": "Акакий Арачимарович"
    }
  }
]

Главное, чтобы имя параметра в объекте, которое обращается к другому ресурсу было в единственном числе и содержало {name}_id

Если у нас есть ресурс /posts, то свойство должно называться post_id

Если /patients то свойство в объектах patient_id

Правила именования полей для связи

✅ Правильно: user_id, post_id, order_id, notification_id и т.п.
{
  "id": 151,
  "name": "Заголовок новости",
  "user_id": 1,
}

{
  "id": 1,
  "name": "Новость удалена модератором",
  "post_id": 151,
}

{
  "id": 1,
  "name": "Заказ #177 оформлен успешно!",
  "order_id": 177,
}
❌ Неправильно: users_id, id_user, userId, posts_id, user, post и т.п.
{
  "id": 151,
  "name": "Заголовок новости",
  "userId": 1,
}

{
  "id": 1,
  "name": "Пользователь Вася Пупкин заблокирован",
  "id_user": 1,
}

{
  "id": 1,
  "name": "Вася Пупкин написал комментарий",
  "user": 1,
}
🔛