Вложенный запрос Graphql очень медленный

Когда наш проект был основан на REST, время отклика составляло 200 мс ~ При изменении проекта в GraphQL.

Из-за того, что каждый узел пытается разрешить, и после разрешения их подсущность тоже разрешается. вызывают чрезвычайно высокую задержку, время отклика - 11 секунд!

Что я сделал, так это попытался получить ВСЮ необходимую информацию, включая все подсущности, и разрешить этот огромный объект из преобразователя запросов.

время отклика сократилось до 800 мс.

НО, преобразователь подсущностей все еще происходит! (Мне пришлось закрыть их для этого теста). Как я могу отключить их в некоторых случаях?

есть ли другой способ решить это?


person Tal Gvili    schedule 27.10.2017    source источник


Ответы (1)


Похоже, вы хотите получить связанные данные для каждого поля, только если свойство родительского объекта не определено. Итак, если ваш резольвер выглядит так:

foos ({ id }, args, context) {
  return getFoos(id)
}

просто сделайте вызов, который извлекает ваши данные, условным, например:

foos ({ id, foos }, args, context) {
  return foos ? foos : getFoos(id)
}
person Daniel Rearden    schedule 27.10.2017
comment
Спасибо, я попробую. есть шанс, что вы знаете какие-нибудь рецепты, как уменьшить задержку запроса graphql? - person Tal Gvili; 28.10.2017