Подзапрос, из-за отсутствия лучшего термина, при использовании API, написанного на GraphQL - PullRequest
0 голосов
/ 17 октября 2018

Я относительно новичок в GraphQL, поэтому, пожалуйста, потерпите меня ...

Тем не менее, я пишу приложение в node.js для передачи / извлечения данных из двух разнородных систем, одна из которыхимеет API, написанный на GraphQL.

Для системы Graph у меня есть что-то вроде следующих типов:

Time {
  TimeId: Int
  TaskId: Int
  ProjectId: Int
  Project: [Project]
  TimeInSeconds: Int
  Timestamp: Date
}

и

Task {
 TaskId: Int
 TaskName: String
 TaskDescription: String
}

Где Project - это другой тип, определение которого не важно, только то, что он включен в определение типа как поле ...

Я хотел бы знать, есть ли способ написатьзапросить Time таким образом, чтобы я мог включить значения типа Task в мои результаты аналогично тому, как значения для типа Project включены в определение?

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

Я подозреваю, что я не могу, и мне придется запрашивать оба по отдельности и объединять их после факта, но я хотел проверить здесь на всякий случай.

1 Ответ

0 голосов
/ 17 октября 2018

К сожалению, если тип Time не предоставляет какое-либо поле для извлечения соответствующего Task, вы не сможете запросить его в рамках того же запроса.Вы можете включить несколько запросов в один запрос GraphQL;однако, они запускаются параллельно, что означает, что вы не сможете использовать значение TaskId, возвращаемое одним запросом, в качестве переменной, используемой в другом запросе.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...