#5 – Добавление связей в схему
Відеоурок
Одной из ключевых возможностей GraphQL является простота создания связей между различными сущностями. Это позволяет клиенту запрашивать вложенные данные за один запрос, избегая избыточных обращений к серверу.
Рассмотрим пример: у нас есть два типа — User и Post. Один пользователь может иметь несколько постов. В GraphQL эту связь можно выразить следующим образом:
type User {
id: ID!
name: String!
posts: [Post!]!
}
type Post {
id: ID!
title: String!
content: String!
author: User!
}В этом примере у каждого пользователя есть поле posts, которое содержит массив постов. А каждый пост, в свою очередь, содержит поле author, ссылающееся на пользователя. Такая двухсторонняя связь позволяет гибко работать с данными.
Чтобы эти связи работали, необходимо правильно реализовать резолверы. Вот пример на JavaScript (с использованием Apollo Server):
const resolvers = {
User: {
posts: (parent, args, context) => {
return context.db.posts.filter(post => post.authorId === parent.id)
},
},
Post: {
author: (parent, args, context) => {
return context.db.users.find(user => user.id === parent.authorId)
},
},
}Такой подход позволяет клиенту сделать простой вложенный запрос:
query {
users {
name posts {
title
}
}
}В ответ клиент получит всех пользователей вместе с их постами. GraphQL автоматически определит, какие поля и связи нужно вернуть, и сформирует ответ по указанной структуре.
Именно благодаря таким возможностям GraphQL становится мощным инструментом для построения гибких и эффективных API.
Матеріали для курсу
Щоб завантажувати матеріали до відеокурсів, необхідно оформити підписку на сайт
Завдання до уроку
Необхідно оформити передплату на проект, щоб отримати доступ до всіх домашніх завдань
Велике завдання за курсом
Вам необхідно оформити передплату на сайті, щоб мати доступ до всіх великих завдань. У завдання входить методика рішення, а також готовий проект з відповіддю до завдання.
PS: подібні завдання доступні при підписці від 1 місяця
Також варто подивитися