如何查询 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
    });
  });
};

比昨天知道的模板多了很多,哈哈!