我正在尝试扩展使用neo4jgraphqljs自动生成的graphql模式
这是我的图形模式
TypeDefs
type Person {
_id: Long!
addresslocation: Point!
confirmedtime: DateTime!
healthstatus: String!
id: String!
name: String!
performs_visit: [Visit] @relation(name: "PERFORMS_VISIT", direction: OUT)
visits: [Place] @relation(name: "VISITS", direction: OUT)
VISITS_rel: [VISITS]
}
type Place {
_id: Long!
homelocation: Point!
id: String!
name: String!
type: String!
part_of: [Region] @relation(name: "PART_OF", direction: OUT)
visits: [Visit] @relation(name: "LOCATED_AT", direction: IN)
persons: [Person] @relation(name: "VISITS", direction: IN)
}
type Visit {
_id: Long!
duration: String!
endtime: DateTime!
id: String!
starttime: DateTime!
located_at: [Place] @relation(name: "LOCATED_AT", direction: OUT)
persons: [Person] @relation(name: "PERFORMS_VISIT", direction: IN)
}
type Region {
_id: Long!
name: String!
places: [Place] @relation(name: "PART_OF", direction: IN)
}
type Country {
_id: Long!
name: String!
}
type Continent {
_id: Long!
name: String!
}
type VISITS @relation(name: "VISITS") {
from: Person!
to: Place!
duration: String!
endtime: DateTime!
id: String!
starttime: DateTime!
}
现在我扩展Person来执行自定义查询,为了做到这一点,我使用了
@cypher
指令
typeDefs2
type Person {
potentialSick: [Person] @cypher(statement: """
MATCH (p:this)--(v1:Visit)--(pl:Place)--(v2:Visit)--(p2:Person {healthstatus:"Healthy"})
return *
""")
}
我通过合并两个typedef来创建模式,它按预期工作
export const schema = makeAugmentedSchema({
typeDefs: mergeTypeDefs([typeDefs, typeDefs2]),
config: {
debug: true,
},
});
问题
可以从我的自定义查询
potentialSick
返回一个自定义类型(在graphql中映射)?
我的目标是返回一个类似这样的类型
type PotentialSick {
id: ID
name: String
overlapPlaces: [Place]
}
其中重叠位置是我的neo4j查询中的
pl
MATCH (p:this)--(v1:Visit)--(pl:Place)--(v2:Visit)--(p2:Person {healthstatus:"Healthy"})
我意识到neo4jgraphqljs
是一个查询生成器,因此我可以使用graphql仅使用主模式来获取数据。我的问题是:
{
Person(filter: { healthstatus: "Sick" }) {
id
visits {
_id
persons(filter: { healthstatus: "Healthy" }) {
_id
}
}
}
}
考虑到这一原则,对于需要@cyper
的更复杂查询,我可以扩展每种类型的基本模式,并依赖于graphql特性
例如
type Person {
potentialSick: [Place] @cypher(statement: """
MATCH path =(this)-[:VISITS]->(place:Place)<-[:VISITS]-(p2:Person {healthstatus:"Healthy"})
return place
""")
潜在生病返回地点
,然后要获取访问该地点的人,我可以使用graphql
{
Person(filter: { healthstatus: "Sick" }) {
id
potentialSick {
persons (filter: { healthstatus: "Healthy" }){
_id
}
}
}
}
Cypher对我来说似乎比Gremlin要清楚得多,总的来说,Neo4j的家伙似乎都在和Cypher一起。但是--如果Cypher与Gremlin相比是有限的--我真的想提前知道这一点。
使用neo4j 1.9。2,我试图在我的图中找到所有与另一个节点有一对一关系的节点。假设我的图表中有人,我想找到所有人,他们只有一个朋友(自2013年以来),而这一个朋友只有另一个人作为朋友,没有其他人。作为回报,我希望有所有这些“孤立”的朋友对。 我尝试了以下方法: 但是这个查询并不是它应该做什么——它只是不返回任何内容。 注:两人之间只有一种关系。因此,一个朋友有一个新的关系,另一个是一个外向
我通常希望创建一个GraphQL类型,它表示跨越多个节点的Cypher查询的结果。在这种情况下,我无法从返回具体节点,因为不存在这样的节点。我试图从顶级查询返回适当命名的字段,但这种方法不起作用。 查询: 产生以下错误: 我知道我可以用每个字段的注释来满足单个字段,这不适合这种情况。这个问题是关于满足整个结果类型。 如果答案需要在数组中使用自定义处理程序,只要我可以在单个查询中收集满足该类型所需的
为了计算添加到DB表名称中的项数,我使用了一个带有Spring JPA的本机查询: DTO对象,应该包含在返回的列表中: 我似乎没有正确定义dto?如何正确定义dto,以便返回对象列表?
我有以下CPT: 以及以下出现在CPT条款下的自定义分类法: 现在,我试图创建一个single-articles.php,在其中我查询一个文章,以包括所有自定义分类法信息。 我已经尝试了所有的变体: 我对PHP比较陌生 但是我不明白为什么php/wp没有显示对象中包含的所有数据。理想情况下,我只想查询一篇文章并返回所有数据,以包含所有附加分类法的信息。我不想按分类法查询文章,因此我有两个问题: 1
下面是我的上下文的概念示例: 我有一个抽象类,名为:(包含一个属性为String) 我有一个子类,名为: 我有一个子类,名为: 使用Spring-Data-Neo4j,我将a。 我创建了一个测试类,以便在图中插入一个和一个<整口井都发生了= 现在,我想进行这种密码查询: 检索id=123的用户 因此,我必须找到更有效的方法来检查所有用户节点(FacebookUser和TwitterUser的联合)