2016-08-09 4 views
0

Ниже я пытаюсь установить мутацию example с одним объектом-аргументом credentials. Раньше я работал над этим, а потом внезапно прекратил работать, не выполнив часть JSON. Почему я не могу отправить json через credentials?Одиночный аргумент JSON в мутации

import { 
    GraphQLSchema, 
    GraphQLObjectType, 
    GraphQLString, 
    GraphQLInt, 
    GraphQLInputObjectType, 
    GraphQLNonNull, 
    graphql 
} from 'graphql' 


let requestType = new GraphQLInputObjectType({ 
    name: 'Request', 
    fields: { 
    name: {type: GraphQLString}, 
    } 
}) 

let responseType = new GraphQLObjectType({ 
    name: 'Response', 
    fields: { 
    name: {type: GraphQLString}, 
    age: {type: GraphQLInt} 
    } 
}) 

let schema = new GraphQLSchema({ 
    query: new GraphQLObjectType({ 
    name: 'Query', 
    fields: { 
     author: { 
     type: GraphQLString, 
     resolve: (source, args, context, info) => { 
      return 'Thomas Reggi' 
     } 
     } 
    } 
    }), 
    mutation: new GraphQLObjectType({ 
    name: 'Mutation', 
    fields: { 
     example: { 
     type: responseType, 
     args: { 
      credentials: { 
      name: 'credentials', 
      type: requestType 
      } 
     }, 
     resolve: (source, args, context, info) => { 
      return { 
      'name': 'Thomas Reggi', 
      'age': 26 
      } 
     } 
     } 
    } 
    }) 
}) 

let credentials = { name: "Thomas Reggi" } 

let requestString = ` 
mutation { 
    example(credentials: ${JSON.stringify(credentials)}) { 
    name, 
    age 
    } 
}` 

graphql(schema, requestString).then(result => { 
    console.log(result) 
}) 

Вот ошибка:

{ errors: 
    [ Syntax Error GraphQL request (3:25) Expected Name, found String "name: " 

    2: mutation { 
    3: example(credentials: {"name":"Thomas Reggi"}) { 
           ^
    4:  name, 
     ] } 

Где ссылка на Name взялось? Почему это бросает ошибку?

+0

FYI, в вашем 'requestString', вы не были должным образом кавычек здесь:' Примера (учетные данные: { "Имя:„Томас Рэгги“})' –

+0

я имел опечатку, но я все еще могу я получаю JSON для работы, где ключи находятся в кавычках. – ThomasReggi

ответ

2

Только что нашел трудный путь. У вас не может быть {"name": "Thomas Reggi"}, потому что имя указано в кавычках.

Этот запрос работает.

mutation { 
    example(credentials: {name: "Thomas Reggi"}) { 
    name, 
    age 
    } 
} 
+0

Я смотрю на код клиента Apollo GraphQL и мутации со сложными параметрами - это настоящая боль. Я думаю, что подписание JSON, а затем удаление кавычек на имена полей будет работать. –