Неизвестная ошибка с сервера GraphQL в ответ на мутацию?
Я пытаюсь запустить мою первую мутацию GraphQL. Я использую следующие рамки:
- laravel-graphql для PHP
- Аполлон-угловой для JavaScript
Цель этой мутации - создать Item
и вернуть все, что я желаю.
Определение мутации на стороне сервера
Таким образом, вот определение мутации на стороне сервера.
namespace App\GraphQL\Mutation\Items;
use App\Item;
use Folklore\GraphQL\Support\Mutation;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\Type;
use GraphQL;
class CreateItemMutation extends Mutation
{
protected $attributes = [
'name' => 'createItem',
'description' => 'Mutation to create an item and insert it into the database.'
];
public function type()
{
return GraphQL::type('Item');
}
public function args()
{
return [
'description' => ['name' => 'description', 'type' => Type::nonNull(Type::string())]
];
}
public function resolve($root, $args, $context, ResolveInfo $info)
{
$item = new Item($args);
return $item;
}
}
Определение мутации на стороне клиента
Вот определение мутации на стороне клиента.
/**
* Creates an item.
*
* @param {ItemCreateForm} item - The item to be created from the Item Create Form.
*
* @returns {Observable<Item>} - An observable resolving to the created item when returned from the server.
*/
public create(item: ItemCreateForm): Observable<Item> {
const mutation = gql`
mutation items($description: String!) {
createItem(description: $description) {
id
}
}
`;
return this.apollo.mutate({
mutation: mutation,
variables: {
description: item.description
}
});
}
отклик
Это ошибка, которую я получаю с сервера graphql. Обратите внимание, что это 200 ОК. Я не совсем уверен, если это имеет значение.
{
"data": {
"createItem": null
},
"errors": [
{
"message": "description",
"locations": [
{
"line": 2,
"column": 3
}
]
}
]
}
Запрос
Вот как apollo-angular преобразует запрос.
{
"operationName": "items",
"variables": {
"description": "FooBarBaz"
},
"query": "mutation items($description: String!) {\n createItem(description: $description) {\n id\n __typename\n }\n}\n"
}
Что именно здесь происходит не так? Ошибка, которую я получаю, не очень четкая. Хотелось бы мне больше помочь в расшифровке ошибки - я не совсем понимаю, как работают мутации на этом этапе.