У меня есть два типа GraphQL:
type Author {
id: String!
name: String!
}
type Book {
id: String!
author: Author!
name: String!
}
В моей базе данных это реализовано с помощью внешнего ключа в таблице книг:
авторов таблицы (псевдокод)
`id` INTEGER UNSIGNED
`name` STRING
таблицы книг (псевдокод)
`id` INTEGER UNSIGNED
`author_id` INTEGER UNSIGNED REFERENCE `authors.id`
`name` STRING
Поэтому, когда я разрешаю запрос GraphQL, например:
query allTheBooks {
id
name
author {
id
name
}
}
Я бы хотел выполнить только один SELECT
запрос SQLнапример:
SELECT books.id, books.name, authors.id, authors.name
FROM books
LEFT JOIN authors ON authors.id = books.author_id
Вместо текущего:
SELECT books.id, books.name, books.author_id
FROM books
SELECT authors.id, authors.name
FROM authors
WHERE author.id = [one the the books.author_id of the first SELECT]
SELECT authors.id, authors.name
FROM authors
WHERE author.id = [one the the books.author_id of the first SELECT]
[...]
Есть ли способ узнать, какие "дочерние поля" запрашиваются в распознавателе GraphQL?
Заранее спасибо за ответ!