2017-02-14 7 views
0

Ich habe ein Problem, einen Feld-Resolver zu schreiben, wenn die übergeordnete Quelle aus verschiedenen Quellen und verschiedenen Formen kommt.GraphQL Auflösen Mapping

Zum Beispiel unter der Annahme, ich das folgende Schema haben:

type Person 
    id : Number 
    fullname : String 

type Story: 
    title : String 
    author : Person 

Query: 
    getPersonById(id: Number) : Person  # makes db call. 
    getStoryById(id: Number) : Story  # gets the story somehow. 

Nun das Problem mit dem Autor Resolver der Geschichte ist, der Wert, den es gibt ist:

{ id: 1, first_name: "Jack" last_name: "Hugh" } 

während getPersonById zurückgibt:

{ id: 1, firstName: "Jack", lastName: "Hugh" } 

und jetzt kann ich keinen Arbeitsresolver für Person fullName als th schreiben Der Feldname in der Quelle ist unterschiedlich.

Was würden Sie vorschlagen?

Vielen Dank im Voraus!

Antwort

0

Wenn Sie Daten aus verschiedenen Quellen haben, gehe ich mit dem Ansatz, sie zu normalisieren, sobald ich sie bekomme, behalte ich meine Resolver-Funktionen relativ einfach.

Sie könnten leicht eine Resolver-Funktion schreiben, die überprüft, was die Datenform ist und das Richtige tut, aber es ist besser, wenn die Daten bereits in der richtigen Form sind.

Mein Prozess ist in der Regel:

DB/Service Query -> Transform/Normalize Data -> GraphQL type (with custom resolvers only for expensive fields)