2017-11-17 15 views
0

idに基づいてGETリクエストのいずれかにを使用しようとしています。コードは次のとおりです。単純なgraphQLクエリでエラーが発生する

const { graphql, buildSchema } = require('graphql'); 

EmployeeService.prototype.getEmployee = function() { 
    // Construct a schema 
    const schema = buildSchema(` 
    type Query { 
     employee(id="12345") { 
     id 
     items { 
      id 
      name 
     } 
     } 
    } 
    `); 

    // The root provides a resolver function 
    let root = { 
    employee:() => id 
    }; 

    // Run the GraphQL query 
    graphql(schema, '{ employee }', root).then((response) => { 
    console.log(response); 
    }); 
}; 

http://graphql.org/graphql-js/の文書に従おうとしています。 GraphQLエラーが発生しました:"Syntax Error GraphQL request (3:19) Expected :, found =↵↵2: type Query {↵3: employee (id="12345") {↵ ^↵4: id↵" アドバイスをしてください。

答えて

1

あなたは少し物を混ぜているかもしれません。スキーマとリゾルバはAPIの一部であり、クライアント上でクエリを作成する必要はありません。

let schema = buildSchema(` 
    type Item { 
    id: Int! 
    name: String! 
    } 

    type Employee { 
    id: Int! 
    items: [Item] 
    } 

    type Query { 
    employee(id: Int!): Employee 
    } 
`); 

あなたは、あなたの種類とリゾルバ(簡素化の例)を定義します:ちょうどここでは、デモの目的で、有効なスキーマ定義(つまり、通常はAPIサーバ上で実行されます)のために

class Employee { 
    constructor(id, items) { 
     this.id = id; 
     this.items = items; 
    } 
} 

let root = { 
    employee: ({id}) => { 
     return new Employee(id, [{id: 1, name: 'Item 1'}, {id: 2, name: 'Item2'}]); 
    } 
}; 

その後、実行することができますクエリ:

const query = ` 
    { 
    employee(id: 1) { 
     id, 
     items { 
     id, 
     name 
     } 
    } 
    } 
`; 

graphql(schema, query, root).then((response) => { 
    console.log(response.data); 
}); 

リモートAPIに対する実際のクエリを実行するには、ApolloまたはなどのGraphQL clientsを見て210

+0

ありがとうございます。物事は今明らかです。 – Mustang

関連する問題