Я хочу запросить бэкэнд GraphQL с поддержкой django-graphene с интерфейсом 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>
графql/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
},
}
`;
Спасибо @DanielRearden, в итоге моя проблема была решена, исправлен код, отредактированный в сообщении выше.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как упоминалось в комментариях, вам нужно использовать String, а не string. Кроме того, ваш запрос должен выглядеть примерно так:
export const SINGLE_PRODUCT_QUERY = gql`
query Product($slug: String!) {
product(slug: $slug) {
name
description
slug
},
}
`;
Дубликат Переменная GraphQl с использованием grapiql — переменная не определена. Вам необходимо определить свои переменные как часть определения операции. Кроме того, имена типов должны быть точными (т. е.
String, а неstring).