API витрины: запрос переменных параметров?

Shopify Примеры API витрины показывает представление App.js, в котором перечислены все продукты на одной странице. В этих примерах продукты добавляются в корзину с этой индексной страницы, а страница с подробными сведениями о продукте отсутствует. В отличие от примеров, я хочу перейти на страницу сведений о продукте из индекса продуктов.

Индекс продуктов был легким. Но у меня много проблем с пониманием того, как создать страницу для каждого продукта.

Кажется, я не могу использовать запрос graphql с переменной в Shopify Storefront. Например, это не удается:

query myQuery($id: ID!) { Product(id: $id) { id title } }

Я использую nuxt и vue-apollo для создания интерфейса.

Любые указатели приветствуются.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
569
1

Ответы 1

В предоставленном вами запросе отсутствует фактическое значение переменной, которую вы запрашиваете.

Тело HTTP-запроса к конечной точке GraphQL должно выглядеть так:

query:"query myQuery($id: ID!) {
  Product(id: $id) {
    id
    title
  }
}"
variables:{id: "ce03707f-971e-4c64-853c-06a8c2e21448"}

Обновлено: конкретный пример Vue:

// Apollo-specific options
apollo: {
  // Query with parameters
  ping: {
    // gql query
    query: gql`query PingMessage($message: String!) {
      ping(message: $message)
    }`,
    // Static parameters
    variables: {
      message: 'Meow',
    },
  },
},

от: https://akryum.github.io/vue-apollo/guide/apollo/queries.html#query-with-parameters

Спасибо @RozenMD. Затем мне нужно будет динамически определить переменную id для продукта на основе идентификатора маршрута. Что-то вроде этого, я полагаю? export default { apollo: { myQuery: { query: myQuery, prefetch: ({ route }) => { return { id: route.params.id } }, variables: { return { id: this.id } } } } }

Callum Flack 15.08.2018 13:12

Как, черт возьми, один код форматирования здесь, в stackoverflow? ?

Callum Flack 15.08.2018 13:17

@CallumFlack почти готов, я обновил свой комментарий о том, как вы это сделаете в Vue

RozenMD 16.08.2018 00:30

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