6

我有一个 Neo4j 数据库,其关系具有 [:FRIENDS {since: "11/2015"}] 等属性。我需要在 GraphQl Schema 中表示“since”属性。RELAY 有一个叫做“edges”的东西,显然这就是他们实现此功能的方式,但我没有使用 RELAY .....我在 Apollo 中没有看到任何东西(也许我错过了它)。有人可以告诉我如何做到这一点吗?

4

1 回答 1

7

好的......所以为了得到我想要的,即将节点和关系(边缘)呈现给graphql,我通过将object.assign(node,relationship)返回给graphql做了我称之为变通的方法。 ...缺点是我必须定义一个类型 nodeRel {} 来接收组合对象,但它可以工作。此外,节点和关系对象不能具有相似的命名属性。我现在可以回答约翰和玛丽是多久的朋友或约翰属于哪些团体以及他成为会员多长时间的问题......架构片段:

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

解析器:

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

我希望这对其他人有帮助....

于 2017-09-16T15:55:57.010 回答