Лучшие практики проектирования схем Graphql
У меня вопрос ниже:
Допустим, у меня есть такой тип продукта
type Option {
id: Int!
value: String!
}
type Product{
id: Int!
name: String!
price: Float!
options: Option
}
Если у меня есть такая схема, каждый раз, когда мне нужны параметры продукта (у меня есть productID из запроса), мне нужно запрашивать весь продукт (с идентификатором, именем, ценой), и у меня будет 2 запроса Mysql к базе данных (от 1 до получить продукт и 1, чтобы получить варианты продукта).
Должен ли я иметь дополнительное отдельное поле в объекте запроса, подобное этому, чтобы получить базу опций продукта на productID? И если мне нужно сохранить вложенную схему, как указано выше, есть ли способ получить параметры продукта, не выполняя его родительский (продукт) преобразователь?
product_options(productId: Int!) : Option
Спасибо
1 ответ
Я думаю, это скорее вопрос о взаимосвязи данных, но тем не менее...
ИМО таблица для Product Options
в базе данных SQL (если это еще не сделано) должен иметь столбец, который является внешним ключом для Product
что он принадлежит / связан с. Это позволяет легко иметь вложенные типы GraphQL и преобразователи уровня поля.
Как только это будет сделано, вам не понадобится отдельный запрос для структуры параметров, преобразователь уровня поля для Product.options
будет достаточно, просто запросив:
{
product(id: 123) {
options {
value
}
}
}
Вы можете использовать уже полученный Product.id
в вашем коде, чтобы выполнить запрос на уровне поля для их строки параметров.