Как сделать простое соединение в GraphQL?

Я очень новичок в GraphQL и пытаюсь выполнить простой запрос на соединение. Мои образцы таблиц выглядят так:

{
  phones: [
    {
      id: 1,
      brand: 'b1',
      model: 'Galaxy S9 Plus',
      price: 1000,
    },
    {
      id: 2,
      brand: 'b2',
      model: 'OnePlus 6',
      price: 900,
    },
  ],
  brands: [
    {
      id: 'b1',
      name: 'Samsung'
    },
    {
      id: 'b2',
      name: 'OnePlus'
    }
  ]
}

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

Например. При запросе телефона с id = 2 он должен вернуть:

{id: 2, brand: 'OnePlus', model: 'OnePlus 6', price: 900}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
9
0
9 894
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

GraphQL как язык запросов во внешнем интерфейсе не поддерживает «объединения» в классическом смысле SQL.

Скорее, он позволяет вам выбирать, какие поля в конкретной модели вы хотите получить для своего компонента.

Чтобы запросить все телефоны в вашем наборе данных, ваш запрос будет выглядеть следующим образом:

query myComponentQuery {
  phone {
    id
    brand
    model
    price
  }
}

Сервер GraphQL, который запрашивает ваш интерфейс, будет иметь отдельные преобразователи полей, сообщающие GraphQL, где получить идентификатор, бренд, модель и т. д.

Серверный преобразователь будет выглядеть примерно так:

Phone: {
  id(root, args, context) {
    pg.query('Select * from Phones where name = ?', ['blah']).then(d => {/*doStuff*/})
    //OR
    fetch(context.upstream_url + '/thing/' + args.id).then(d => {/*doStuff*/})

    return {/*the result of either of those calls here*/}
  },
  price(root, args, context) {
    return 9001
  },
},

Можете ли вы привести пример в резольвере для бренда? Кажется, это то, к чему стремится вопрос.

user3738936 15.11.2020 16:31

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