Лучшие практики проектирования схем 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 в вашем коде, чтобы выполнить запрос на уровне поля для их строки параметров.

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