2016-06-23 7 views
3

Wie mache ich ein Schema für eine Objekteigenschaft, die ein Array von Zeichenfolgen in GraphQL ist? Ich möchte die Antwort wie folgt aussehen:GraphQL Objekteigenschaft sollte eine Liste von Zeichenfolgen sein

{ 
    name: "colors", 
    keys: ["red", "blue"] 
} 

Hier ist mein Schema

var keysType = new graphql.GraphQLObjectType({ 
    name: 'keys', 
    fields: function() { 
    key: { type: graphql.GraphQLString } 
    } 
}); 

var ColorType = new graphql.GraphQLObjectType({ 
    name: 'colors', 
    fields: function() { 
    return { 
     name: { type: graphql.GraphQLString }, 
     keys: { type: new graphql.GraphQLList(keysType) 
    }; 
    } 
}); 

Wenn ich diese Abfrage ich einen Fehler laufen und keine Daten, die Fehler nur ist [{}]

query {colors {Name, Schlüssel}}

Wenn ich jedoch eine Abfrage ausführen, um nur den Namen zurückzugeben, erhalte ich eine erfolgreiche Antwort.

query {Farben {name}}

Wie erstelle ich ein Schema, das ein Array von Strings zurück, wenn ich für Schlüssel abfragen?

Antwort

7

Ich fand die Antwort. Der Schlüssel ist, um den Pass graphql.GraphQLString in graphql.GraphQLList()

Das Schema wird:

var ColorType = new graphql.GraphQLObjectType({ 
    name: 'colors', 
    fields: function() { 
    return { 
     name: { type: graphql.GraphQLString }, 
     keys: { type: new graphql.GraphQLList(graphql.GraphQLString) 
    }; 
    } 
}); 

Mit dieser Abfrage:

query {Farben {name, Schlüssel}}

ich die gewünschte Ergebnisse:

{ 
    name: "colors", 
    keys: ["red", "blue"] 
} 
+1

Super, danke, dass du dir die Zeit genommen hast, deine Lösung zu schreiben. Rettete mir eine Menge Zeit! – davnicwil