2017-09-11 2 views
7

Ich habe eine Neo4j DB mit Beziehungen, die Eigenschaften wie [: FREUNDE {seit: "11/2015"}] haben. Ich muss die Eigenschaft "since" im GraphQl-Schema darstellen. RELAIS hat etwas, das "Kanten" genannt wird, und anscheinend benutzen sie dieses Feature, aber ich benutze kein RELAIS ..... Ich habe in Apollo nichts gesehen (vielleicht habe ich es verpasst). Kann mir jemand zeigen, wie man das macht?Wie stelle ich Neo4j-Beziehungseigenschaften in meinem Graphql-Schema dar?

+0

Ich fand den folgenden gut geschriebenen Blog, der zu meiner Antwort führen kann .... https: //dev-blog.apollodata.com/explaining-graphql-connections-c48b7c3d6976 – MichaelE

Antwort

6

Ok ... also, um zu bekommen, was ich wollte, was sowohl den Knoten als auch die Beziehung (Edge) zu graphql darstellen sollte, tat ich, was ich einen Workaround nennen würde, indem ich object.assign (node, relation) zu graphql .... der Nachteil ist, dass ich einen Typ nodeRel {} definieren muss, um die kombinierten Objekte zu erhalten, aber es funktioniert. Außerdem können die Knoten- und Beziehungsobjekte keine ähnlichen benannten Eigenschaften haben. Ich kann jetzt die Frage beantworten, wie lange John und Mary sind Freunde oder welche Gruppen John gehört und wie lange er ist ein Mitglied .... Schema Schnipsel:

... memberOf : [Group] 
    groupStatus : [MemberProfile] 
    attended : [Meeting] 
    submittedReport : [Report] 
    post  : [Post] 

} 

type MemberProfile { 
    name   : String 
    location  : String 
    created  : String 
    since   : String 
    role   : String 
    financial  : Boolean 
    active  : Boolean 
    } 

Resolver:

groupStatus(voter) { 
      let session = driver.session(), 
       params = { voterid: voter.voterid }, 
       query = ` 
         MATCH (v:Voter)-[r:MEMBER_OF]->(g:Group) 
         WHERE v.voterid = $voterid 
         RETURN g AS group,r AS rel; 
         ` 
      return session 
       .run(query, params) 
       .then(result => { 
        return result.records.map(record => { 
         return Object.assign(record.get("group").properties, record.get("rel").properties) 
        }) 
       }) 
     }, 

Ich hoffe, dass dies jemand anderen hilft ....

Verwandte Themen