GraphQL

9 уроков
Консультации
#5 – Добавление связей в схему

#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 месяца

Также стоит посмотреть

Фреймворк Laravel: cоздание веб сайта
9 уроков
Изучение JavaScript: от нуля и до создания сайта
Xamarin Forms / Мобильные приложения на C#
10 уроков
С++ программирование / Уроки C++
26 уроков
Изучение Blender с нуля. Уроки 3D моделирование
11 уроков
Нейронные сети / Изучение Python OpenCV
9 уроков
Комментарии
Добавить комментарий

Пока комментариев нет