2017-01-02 2 views
1

Mein Mungo Schema zu handhaben alsWie Bindestriche in GraphQL Schemadefinitionen

var ImageFormats = new Schema({ 
    svg  : String, 
    png-xlarge : String, 
    png-small : String 
}); 
folgt

Als ich dies in einem GraphQL Schema übersetzen, ist das, was ich

export var GQImageFormatsType: ObjectType = new ObjectType({ 
    name: 'ImageFormats', 

    fields: { 
      svg  : { type: GraphQLString }, 
     'png-xlarge': { type: GraphQLString }, 
     'png-small' : { type: GraphQLString } 
} 
}); 

GraphQL gibt folgende Fehler versuchen : Error: Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "png-xlarge" does not.

Wenn ich versuche, die GraphQL nach meinem Mongoose-Modell zu modellieren, wie kann ich die Felder abstimmen? Gibt es eine Möglichkeit für mich, einen Alias ​​zu erstellen?

(Ich habe dies auf dem Graffiti und Stackoverflow-Foren gesucht, konnte aber nicht eine ähnliche Frage finden)

+0

im Code oben (Mungo-Schema), können Sie nicht erklären, 'png-lg' Eigenschaft –

+0

@Medet_Tleukabiluly Entschuldigung, ich habe die falsche Fehlermeldung eingefügt. Es bezieht sich tatsächlich auf die png-xlarge-Eigenschaft des Mongoose-Schemas. Irgendwelche Gedanken? – techtrek

+0

Versuchen Sie explizit, default-Wert für mongoose-Schema zu definieren, 'png-xlarge: {type: String, default: ''}', wahrscheinlich Mungo Null-Werte von GraphQLString Null-Werte –

Antwort

2

GraphQL Returns the following error: Error: Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "png-xlarge" does not.

GraphQL beklagt, dass Feldname 'png-xlarge' ist ungültig. Der reguläre Ausdruck in der Fehlermeldung besagt, dass das erste Zeichen unabhängig von Groß- und Kleinschreibung ein Buchstabe sein kann. Die restlichen Zeichen können auch Ziffern enthalten. Daher ist es klar, dass weder der Bindestrich - noch das einfache Zitat ' für einen Feldnamen akzeptabel ist. Die Regeln folgen grundsätzlich den Regeln für die Variablenbenennung, die Sie in fast jeder Programmiersprache finden. Sie können die GraphQL naming rules überprüfen.

If I am trying to model the GraphQL after my Mongoose model, how can I reconcile the fields? Is there a way for me to create an alias?

Mit Hilfe resolve Funktion, können Sie dies wie folgt:

pngXLarge: { 
    type: GraphQLString, 
    resolve: (imageFormats) => { 
     // get the value `xlarge` from the passed mongoose object 'imageFormats' 
     const xlarge = imageFormats['png-xlarge']; 
     return xlarge; 
    }, 
}, 
+0

Danke, das ist perfekt @ Ahmad-Ferdous – techtrek