Я пытаюсь запросить бэкэнд GraphQL на основе django-графена с интерфейсом на основе Vue Apollo / Nuxt для получения данных об одном продукте.
Мой метод попытки отправить запрос приводит к следующей ошибке:
ERROR Cannot assign to read only property 'name' of object 'GraphQLError: Syntax Error: Expected Name, found $'
at errorMiddleware (node_modules\@nuxt\server\dist\server.js:320:18)
at call (node_modules\connect\index.js:235:7)
at next (node_modules\connect\index.js:183:5)
at nuxtMiddleware (node_modules\@nuxt\server\dist\server.js:205:5)
Мой текущий код выглядит следующим образом:
_slug.vue
<template>
<div>
<h1>{{ product.name }}</h1>
<div class="description" v-html="product.description"></div>
</div>
</template>
<script>
import { SINGLE_PRODUCT_QUERY } from '@/graphql/products'
export default {
props: ['id', 'slug'],
data() {
return {
product: {
name: 'Test Product',
description: 'Test Description',
slug: 'test'
}
}
},
apollo: {
product: {
query: SINGLE_PRODUCT_QUERY,
variables: {
slug: 'test-product'
}
}
}
}
</script>
graphql / products.js
import gql from 'graphql-tag'
export const SINGLE_PRODUCT_QUERY = gql `
query {
product($slug: string!) {
name
description
slug
},
}
`;
Следующий запрос отлично работает с моим бэкэндом:
query {
product (slug: "test-product") {
id
name
slug
}
}
Я понимаю, что это может быть простой синтаксической ошибкой, но я не совсем уверен, как ее исправить.
РЕДАКТИРОВАТЬ: правильный запрос выглядит следующим образом - спасибо @DanielRearden:
export const SINGLE_PRODUCT_QUERY = gql `
query product( $slug: String!) {
product(slug: $slug) {
name
description
slug
},
}
`;