Оптимизация graphql

Все!

Можно ли получить доступ к информации и контексту для определения узла. Где я могу иметь абстрактное синтаксическое дерево (AST). Мне это действительно нужно, чтобы оптимизировать запросы моего объекта (то есть узла).

Например: если у меня есть следующий запрос graphql:

query { node(id:'some_id'){ name, surname, friends{ edges node{ { name,
  surname} }}, posts{edges{ node{ id, text} }}}. 

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

Как лучше это сделать?

Спасибо!

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
161
1

Ответы 1

DataLoader может помочь вам в этом, без необходимости проверять запрос. По сути, это позволяет группировать дорогие звонки. Вы пишете пакетную функцию, которая вызывается для каждого пакета, в этой функции вы создаете один SQL-запрос для всех отдельных вызовов. Это очень здорово!

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

Прочтите документацию здесь и попробуйте (это круто) https://github.com/facebook/dataloader

Другие вопросы по теме