2016-10-10 1 views

Antwort

29

Wenn Sie GraphQL.js Version 0.7.0 oder höher verwenden, können Sie einfach einen Kommentar direkt vor dem Feld, Typ oder Argument, das Sie beschreiben möchten, hinzufügen. Beispiel:

# A type that describes the user 
type User { 
    # The user's username, should be typed in the login field. 
    username: String! 
    # The user's password. 
    password: String! 
} 

Unter Version 0.7.0 ist es nicht möglich, Beschreibungen innerhalb der Schemasprache hinzuzufügen.

UPDATE: seit Version v0.12.3 Sie Stringliterale

"A type that describes the user" 
type User { 
    "The user's username, should be typed in the login field." 
    username: String! 
    "The user's password." 
    password: String! 
} 
+0

Dies ist nicht mehr der Standard, siehe: https://github.com/graphql/graphql-js/blob/master/src/utilities/extendSchema.js#L47 - sollte ein String-Literal wie "Meine Beschreibung" sein ' – Casey

+0

Also String-Literale sind der aktuelle Standard Stand Februar 2018. – Vincent

6

Dies ist eine große Frage verwenden sollte! Und tatsächlich hat eine großartige Geschichte in graphql Welt.

Es gab mehrere Probleme, Diskussionen und Pull Requests auf dem 0-Repo, die versucht, mögliche Syntax dafür zu diskutieren, da es etwas war, das viele Mitglieder der Community als notwendig erachteten. Dank Lee Byron und this Pull Request können wir einer Schemasprache Beschreibungen hinzufügen, indem wir traditionelle Kommentare verwenden.

Zum Beispiel

// Grab some helpers from the `graphql` project 
const { buildSchema, graphql } = require('graphql'); 

// Build up our initial schema 
const schema = buildSchema(` 
schema { 
    query: Query 
} 

# The Root Query type 
type Query { 
    user: User 
} 

# This is a User in our project 
type User { 
    # This is a user's name 
    name: String! 

    # This is a user's password 
    password: String! 
} 
`); 

Und wenn wir graphql verwenden, die als 0.7.0 neuere ist, werden die Kommentare tatsächlich in die Beschreibung einge für die Felder oder Typen. Wir können dies überprüfen, indem Sie eine Innerlichkeit Abfrage auf unserem Schema ausgeführt wird:

const query = ` 
{ 
    __schema { 
    types { 
     name 
     description, 
     fields { 
      name 
      description 
     } 
    } 
    } 
} 
`; 

graphql(schema, query) 
    .then((result) => console.log(result)); 

die uns ein Ergebnis geben würde, die wie folgt aussieht:

{ 
    "data": { 
    "__schema": { 
     "types": [ 
     { 
      "name": "User", 
      "description": "This is a User in our project", 
      "fields": [ 
      { 
       "name": "name", 
       "description": "This is a user's name" 
      }, 
      { 
       "name": "password", 
       "description": "This is a user's password" 
      } 
      ] 
     }, 
     ] 
    } 
    } 
} 

und zeigt uns, dass die # Kommentare wie die Beschreibungen aufgenommen wurden die Felder/Kommentare, die wir ihnen geben.

Hoffe, dass hilft!

+1

Sehr hilfreicher Dank - Ich habe lange nach einer Antwort gesucht und mich durch viele alte Probleme gekämpft - als die Antwort so einfach war! :) – derekdreery

+0

Ja, hat mich auch eine Weile gesucht. TYVM! – DJC

+0

Ich benutze graphql 0.12.3 und das funktioniert nicht für mich. Beschreibung ist immer null mit dem obigen Code. – Casey

2

Falls Sie sich mit einem Java Implementierung ....

Für graphql-java Version 7.0 (die neueste Version zum Zeitpunkt des Schreibens) mit einem Schema ersten Ansatz können Sie Kommentare über die Verwendung Feld, Typ oder Argument.

Zeichenfolgenliterale sind nicht gültige Syntax ab Version 7.0.

Verwandte Themen