如何查询 R 中的 Neo4j 关系?
How to query a Neo4j relationship in R?
我有一个项目节点通过关系“IN_NEED_OF”连接到技能节点。我正在使用带有 Neo4j GraphQL 库的 R-Shiny 应用程序来提取我需要的数据。目前,此代码有效:
execute_query = function(query) {
result <- conn$exec(Query$new()$query('link', query)$link)
flat_result <- result %>% fromJSON(flatten = F)
# print(flat_result)
result.df <- as.data.frame(flat_result[[1]])
# print(result.df)
output$table <- DT::renderDataTable({result.df}, rownames = TRUE, filter = 'top', selection = 'single', extensions = 'Buttons')
}
# Run a query
execute_query('
query SampleQuery {
Project{
name
description
}
}
')
但是,我需要“IN_NEED_OF”连接的技能。我已经尝试了这些块,并且每个块都收到了错误:
# Run a query
execute_query('
query SampleQuery {
Project{
name
description
challenges: [Skill]
@cypher(
statement: """
MATCH (p:Project)-[:IN_NEED_OF]->(s:Skill)
RETURN s
"""
}
}
')
这失败了,因为挑战部分不应该在实际查询中,而是在架构中。
execute_query('
type Project{
name: String!
description: String!
challenges(limit: Int = 10): [Skill]
@relationship(type: "IN_NEED_OF", direction: OUT)
}
type Skill{
name
}
query SampleQuery {
Project{
name
description
challenges{
name
}
}
}
')
这失败了,因为
Error : 2.5-7.5: schema support disabled
我已经尝试了这两个代码块的几种变体,但我无法确定我的问题是在 R、execute_query 和函数中,还是在我使用 GraphQL 的方式中。
(服务器是带有来自 Neo4j GraphQL 库的 GraphQL API 的 Apollo。)
我想通了!我正在使用一个模板,但没有意识到我的架构是从 Neo4j 推断出来的,所以我不允许更改它。我更改了我的 index.js 以包含从我的模式中打印出来的控制台,并找到了我需要的关系的名称。
const inferAugmentedSchema = driver => {
return inferSchema(driver).then(result => {
console.log(result.typeDefs)
return makeAugmentedSchema({
typeDefs: result.typeDefs
});
});
};
比昨天知道的模板多了很多,哈哈!
我有一个项目节点通过关系“IN_NEED_OF”连接到技能节点。我正在使用带有 Neo4j GraphQL 库的 R-Shiny 应用程序来提取我需要的数据。目前,此代码有效:
execute_query = function(query) {
result <- conn$exec(Query$new()$query('link', query)$link)
flat_result <- result %>% fromJSON(flatten = F)
# print(flat_result)
result.df <- as.data.frame(flat_result[[1]])
# print(result.df)
output$table <- DT::renderDataTable({result.df}, rownames = TRUE, filter = 'top', selection = 'single', extensions = 'Buttons')
}
# Run a query
execute_query('
query SampleQuery {
Project{
name
description
}
}
')
但是,我需要“IN_NEED_OF”连接的技能。我已经尝试了这些块,并且每个块都收到了错误:
# Run a query
execute_query('
query SampleQuery {
Project{
name
description
challenges: [Skill]
@cypher(
statement: """
MATCH (p:Project)-[:IN_NEED_OF]->(s:Skill)
RETURN s
"""
}
}
')
这失败了,因为挑战部分不应该在实际查询中,而是在架构中。
execute_query('
type Project{
name: String!
description: String!
challenges(limit: Int = 10): [Skill]
@relationship(type: "IN_NEED_OF", direction: OUT)
}
type Skill{
name
}
query SampleQuery {
Project{
name
description
challenges{
name
}
}
}
')
这失败了,因为
Error : 2.5-7.5: schema support disabled
我已经尝试了这两个代码块的几种变体,但我无法确定我的问题是在 R、execute_query 和函数中,还是在我使用 GraphQL 的方式中。
(服务器是带有来自 Neo4j GraphQL 库的 GraphQL API 的 Apollo。)
我想通了!我正在使用一个模板,但没有意识到我的架构是从 Neo4j 推断出来的,所以我不允许更改它。我更改了我的 index.js 以包含从我的模式中打印出来的控制台,并找到了我需要的关系的名称。
const inferAugmentedSchema = driver => {
return inferSchema(driver).then(result => {
console.log(result.typeDefs)
return makeAugmentedSchema({
typeDefs: result.typeDefs
});
});
};
比昨天知道的模板多了很多,哈哈!