您可以在 GraphQL 架构的 @cypher 指令中使用 RETURN AS 吗?
Can you use RETURN AS within the @cypher Directive in your GraphQL Schema?
假设我有一个简单的模式,只有一个 Person 类型:
// schema.graphql
type Person {
Name: String,
Age: Int,
parents: [Person!]! @relationship(type: "PARENT", direction: OUT)
}
我想要一个查询,通过遍历“PARENT”关系两次,获取每个人的名字和祖父母的名字。在 Cypher 中,我会这样写:
MATCH (child:Person)-[:PARENT]->[parent:Person]-[:PARENT]->(grandparent:Person)
RETURN child.Name AS child_name, grandparent.Name AS grandparent_name
是否可以在我的 graphQL 查询的 @cypher
指令中使用此密码查询?目标是在 cypher 中进行“遍历”以获取祖父母的名字,然后 return 直接使用 child 的名字,而不是必须遍历 GraphQL 响应来获取它,我如果我只是 returned child.
就需要做
我的想法是为这个查询return定义一个新类型,比如:
// schema.graphql
type Child_Grandparent_Pair{
child_name: String,
grandparent_name: String
}
然后像这样编写我的 GraphQL 查询:
// schema.graphql
type Query{
getChildrenAndGrandparentsNames:[Child_Grandparent_Pair]
@cypher(
statement: "MATCH (child:Person)-[:PARENT]->[parent:Person]-[:PARENT]->
(grandparent:Person)
RETURN child.Name AS child_name, grandparent.Name AS grandparent_name"
}
}
但这似乎不起作用。当我尝试查询我的新查询类型时,我从 neo4j 收到一条错误消息,指出未定义 return 类型。希望这对我正在尝试做的事情有意义。有没有更好的方法?
Return 与您的 GraphQL 类型的形状匹配的 Object/Map:
type Query {
getChildrenAndGrandparentsNames: [Child_Grandparent_Pair]
@cypher(
statement: """
MATCH (child:Person)-[:PARENT]->[parent:Person]-[:PARENT]->(grandparent:Person)
- RETURN child.Name AS child_name, grandparent.Name AS grandparent_name
+ RETURN { child_name: child.name, grandparent_name: grandparent.name }
"""
)
}
假设我有一个简单的模式,只有一个 Person 类型:
// schema.graphql
type Person {
Name: String,
Age: Int,
parents: [Person!]! @relationship(type: "PARENT", direction: OUT)
}
我想要一个查询,通过遍历“PARENT”关系两次,获取每个人的名字和祖父母的名字。在 Cypher 中,我会这样写:
MATCH (child:Person)-[:PARENT]->[parent:Person]-[:PARENT]->(grandparent:Person)
RETURN child.Name AS child_name, grandparent.Name AS grandparent_name
是否可以在我的 graphQL 查询的 @cypher
指令中使用此密码查询?目标是在 cypher 中进行“遍历”以获取祖父母的名字,然后 return 直接使用 child 的名字,而不是必须遍历 GraphQL 响应来获取它,我如果我只是 returned child.
我的想法是为这个查询return定义一个新类型,比如:
// schema.graphql
type Child_Grandparent_Pair{
child_name: String,
grandparent_name: String
}
然后像这样编写我的 GraphQL 查询:
// schema.graphql
type Query{
getChildrenAndGrandparentsNames:[Child_Grandparent_Pair]
@cypher(
statement: "MATCH (child:Person)-[:PARENT]->[parent:Person]-[:PARENT]->
(grandparent:Person)
RETURN child.Name AS child_name, grandparent.Name AS grandparent_name"
}
}
但这似乎不起作用。当我尝试查询我的新查询类型时,我从 neo4j 收到一条错误消息,指出未定义 return 类型。希望这对我正在尝试做的事情有意义。有没有更好的方法?
Return 与您的 GraphQL 类型的形状匹配的 Object/Map:
type Query {
getChildrenAndGrandparentsNames: [Child_Grandparent_Pair]
@cypher(
statement: """
MATCH (child:Person)-[:PARENT]->[parent:Person]-[:PARENT]->(grandparent:Person)
- RETURN child.Name AS child_name, grandparent.Name AS grandparent_name
+ RETURN { child_name: child.name, grandparent_name: grandparent.name }
"""
)
}