2017-11-17 6 views
0

Ich versuche, für eine der GET Anfrage basierend auf einer ID zu verwenden. Hier ist der Code:Einfache graphQL-Abfrage gibt Fehler

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); 
    }); 
}; 

Der Versuch, die Dokumentation auf http://graphql.org/graphql-js/ zu folgen. Ich bekomme einen GraphQL Fehler: "Syntax Error GraphQL request (3:19) Expected :, found =↵↵2: type Query {↵3: employee (id="12345") {↵ ^↵4: id↵" Bitte beraten.

Antwort

1

Sie mischen vielleicht Dinge ein wenig auf. Das Schema und die Resolver sind Teil Ihrer API und werden nicht benötigt, um eine Abfrage auf einem Client durchzuführen. Nur zu Demonstrationszwecken hier eine gültige Schema-Definition (das normalerweise auf einem API-Server laufen würde):

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

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

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

Sie dann Ihre Typen und Resolver (vereinfachte Beispiele) definieren:

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'}]); 
    } 
}; 

können Sie dann laufen eine Abfrage:

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

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

tatsächliche Abfragen für einen Remote-API auszuführen hat einen Blick auf GraphQL clients wie Apollo oder lokka

+0

Danke für die Erklärung. Die Dinge sind jetzt klar. – Mustang