我有一个Neo4j数据库,其关系具有[:FRIENDS {since:“11/2015”}]等属性。我需要在GraphQl Schema中表示“since”属性。 RELAY有一些称为“边缘”的东西显然这是他们实现这个功能的方式,但我没有使用RELAY .....我在Apollo中没有看到任何东西(也许我错过了它)。有人能告诉我怎么做吗?
答案 0 :(得分:7)
好的......所以为了得到我想要的东西,将节点和关系(边缘)呈现给graphql我通过返回object.assign(节点,关系)来做我所谓的解决方法to graphql ....缺点是我必须定义一个类型nodeRel {}来接收组合对象但它的工作原理。此外,节点和关系对象不能具有类似的命名属性。我现在可以回答这个问题John和Mary是朋友多长时间或者John属于哪些团体以及他成为会员多长时间...... Schema片段:
... 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)
})
})
},
我希望这可以帮助别人......