2017-09-11 18 views
7

Mam DB Neo4j z relacji, które mają właściwości, takie jak [: FRIENDS {since: "11/2015"}]. Muszę reprezentować właściwość "since" w schemacie GraphQl. RELAY ma coś nazywane "krawędziami" i najwyraźniej tak właśnie implementują tę funkcję, ale ja nie używam RELAY ..... Nie widziałem nic w Apollo (może tęskniłem za tym). Czy ktoś może mi pokazać, jak to zrobić?Jak mogę reprezentować właściwości relacji Neo4j w moim schemacie Graphql?

+0

Znalazłem następujący dobrze napisany blog, który może doprowadzić do mojej odpowiedzi ... https://dev-blog.apollodata.com/explaining-graphql-connections-c48b7c3d6976 – MichaelE

Odpowiedz

6

Ok ... więc, aby uzyskać to, co chciałem przedstawić zarówno węzłowi, jak i relacji (krawędzi) do graphql, zrobiłem to, co nazwałbym obejściem przez zwracanie object.assign (węzeł, relacja) do graphql .... wadą jest to, że muszę zdefiniować typ nodeRel {}, aby otrzymać połączone obiekty, ale działa. Ponadto obiekty węzłów i relacji nie mogą mieć podobnych nazwanych właściwości. Teraz mogę odpowiedzieć na pytanie, jak długo John i Mary są przyjaciółmi czy co należy do grupy John i jak długo jest członkiem .... Schemat urywek:

... 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 
    } 

przelicznika:

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) 
        }) 
       }) 
     }, 

Mam nadzieję, że to pomoże komuś innemu ...

Powiązane problemy