@graphql_ru
GraphQL — русскоговорящее сообщество

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 8 октября 2018 г.

04:31:43 ДП
User 181137011
Ребят, кто-нибудь знает как в https://github.com/19majkel94/type-graphql получить запрошенные поля?
05:44:06 ДП
User 299096137
User 181137011
Ребят, кто-нибудь знает как в https://github.com/19majkel94/type-graphql получить запрошенные поля?
чего получить?
01:26:01 ПП
User 584555800
graphile/postgraphile v4.0.0 → v4.0.1 🎉
01:32:44 ПП
User 124962553
User 299096137
эта штука генерирует еще круд на графе. Я короче реально не понял в чем фича этой штуки, если ты все равно будешь писать на графе схемы и свои резолверы
я так понял, это просто чтобы общаться с базой данных черех GraphQL. Не больше
01:54:42 ПП
User 352892335
User 124962553
я так понял, это просто чтобы общаться с базой данных черех GraphQL. Не больше
сама призма да. но в доках они описывают вариант призма + йога
08:28:54 ПП
User 144022504
User 267858911
оке, это меня устраивает ^_^ красота :)
Почему Prisma?
 В чем же заключается сложность построения серверов GraphQL?

Что ж, в реальных приложениях вы, вероятно, столкнетесь со многими сценариями, где реализация преобразователей может стать чрезвычайно сложной. Тем более, что запросы GraphQL могут быть сложены в несколько уровней, реализация часто становится сложной и может легко привести к проблемам с производительностью.

В большинстве случаев вам также необходимо позаботиться о многих дополнительных рабочих процессах, таких как аутентификация, авторизация (разрешения), разбиение на страницы, фильтрация, в реальном времени, интеграция с сторонними службами или устаревшими системами ...

Как правило, при реализации преобразователей и подключении к базе данных у вас есть два варианта - оба из которых не очень убедительны:

1. Доступ к базе данных напрямую (путем написания SQL или с использованием другого API баз данных NoSQL);
2. Использовать ORM, который обеспечивает абстракцию для вашей базы данных и позволяет получить доступ к ней непосредственно с вашего языка программирования.

Первый вариант проблематичен, поскольку работа с SQL в resolvers сложна и быстро выходит из-под контроля. Другая проблема заключается в том, что SQL-запросы обычно передаются в базу данных как простые строки. Строки не придерживаются какой-либо структуры, это просто сырые последовательности символов. Поэтому ваш инструмент не сможет помочь вам найти какие-либо проблемы с ними или предоставить дополнительные преимущества, такие как автозаполнение в редакторах. Написание SQL-запросов, таким образом, утомительно и подвержено ошибкам.

Второй вариант - использовать ORM, который может показаться хорошим решением вначале. Однако этот подход обычно также не подходит. У ORM обычно возникает проблема, заключающаяся в том, что они реализуют довольно простые решения для доступа к базе данных, которые при использовании GraphQL не будут работать из-за сложности запросов и различных краевых случаев, которые могут возникнуть.

Prisma решает эту проблему, предоставляя вам механизм запросов GraphQL, который заботится о разрешении запросов для вас. При использовании Prisma вы внедряете свои решения таким образом, чтобы они просто делегировали входящие запросы базовому движку Prisma. Благодаря привязкам Prisma делегирование запросов - это простой процесс, в котором большинство резольверов могут быть реализованы как простые однострочные.

Примечание. Связывание Prisma основано на идее сшивания схем и делегирования схемы. Мы не собираемся подробно описывать эти методы в этом уроке. Если вы хотите узнать больше о них, вы можете проверить следующие две статьи:
- Схема схемы GraphQL объясняется: Делегирование схемы https://blog.graph.cool/graphql-schema-stitching-explained-schema-delegation-4c6caf468405
- Повторное использование и компоновка API-интерфейсов GraphQL с привязками GraphQL https://blog.graph.cool/reusing-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5
 Что важно для понимания этой архитектуры, что вы имеете дело с двумя (!) Уровнями API GraphQL. Уровень приложения и уровень базы данных.

Уровень приложения (The application layer)
Первый API GraphQL - это тот, который вы уже начали создавать в предыдущих разделах этого руководства. Это API-интерфейс GraphQL для прикладного уровня. Он определяет API, с которым будут разговаривать ваши клиентские приложения. Здесь вы реализуете бизнес-логику, обычные рабочие процессы, такие как аутентификация и авторизация, или интегрируетесь со сторонними службами (такими как Stripe, если вы хотите реализовать процесс оплаты). API прикладного уровня определяется схемой GraphQL в src / schema.graphql - поэтому мы теперь будем ссылаться на эту схему как схему приложения.

Уровень базы данных (The database layer)
Второй API GraphQL - это тот, который предоставляется Prisma и обеспечивает уровень базы данных. В основном это интерфейс на основе GraphQL для вашей базы данных, который избавляет вас от тонкостей написания SQL. Итак, как выглядит этот API-интерфейс GraphQL?
prisma.io/blog/graphql-schema-stitching-explained-schema-delegation-4c6caf468405
Understanding GraphQL schema stitching (Part II)
08:28:54 ПП
User 144022504
User 267858911
оке, это меня устраивает ^_^ красота :)
API Prisma зеркалирует API базы данных, поэтому он позволяет выполнять операции CRUD для определенных типов данных. Какие типы данных? Ну, это зависит от вас - вы определяете эти типы данных, используя знакомый SDL— Schema Definition Language. 

Как правило, эти типы данных представляют собой объекты вашего домена приложения. Например, если вы строите программное обеспечение для автомобилей, у вас, скорее всего, будут такие типы данных, как Car, CarDealer, Customer и т. Д. Вся коллекция этих типов данных называется вашей моделью данных.

После того, как ваша модель данных определена в SDL, Prisma переводит ее в схему базы данных и соответствующим образом настраивает базовую базу данных. Когда вы отправляете запросы и мутации в API Prisma GraphQL, он переводит их в операции с базой данных и выполняет эти операции для вас. Неплохо, да?

Ранее вы узнали, что все API-интерфейсы GraphQL поддерживаются схемой GraphQL. Итак, кто пишет схему для API Prisma GraphQL? Ответ заключается в том, что он автоматически создается на основе модели данных, которую вы предоставляете. Кстати, эта схема называется  Prisma database schema.  Перевод из курса: https://www.udemy.com/learning-graphql-with-prisma-and-nodejs/
udemy.com/learning-graphql-with-prisma-and-nodejs
Build and Secure GraphQL APIs with NodeJs, Prisma, and MySQL
08:31:24 ПП
User 144022504
@uxname Думаю стоит попробывать основные решения и выбрать, после сопоставительного анализа и под конкретную задачу.