如何在Go中的Neo4j数据库上运行Cypher查询?

时间:2016-09-27 19:27:02

标签: go neo4j

我已经在这个问题上工作了几个小时,而且我还没有为Neo4j的社区Golang驱动程序带来太多运气。

我试图跑步" movies-go-cq"和"新现象"例子。 movies-go-cq示例对我不起作用,it crashes when localhost:8080 is loaded in the browser

Cypher在我的Neo4j数据库中使用neoism查询只返回空/空数据。但是,当我在localhost:7474的Neo4j浏览器中运行相同的查询时,会返回预期的数据。

以下是我使用新主义运行的Go代码:

package main

import (
    "fmt"

    "github.com/jmcvetta/neoism"
)

func main() {
    // Reference: https://godoc.org/github.com/jmcvetta/neoism

    // Connect to the Neo4j server
    db, _ := neoism.Connect("http://localhost:7474/db/data")

    // Issue a query
    res1 := []struct {
        A string `json:"path1"` // `json` tag matches column name in query
        B string `json:"path2"`
    }{}
    cq1 := neoism.CypherQuery{
        // Use backticks for long statements - Cypher is whitespace indifferent
        Statement: `
        MATCH path1 = shortestPath( (plant:Plant {Term: "Vaccinium corymbosum"})-[*..5]-(gene:Gene {Description: "adenylate cyclase activating polypeptide 1"}) )
        MATCH path2 = shortestPath( (gene)-[*..5]-(disease:Medical_Heading {Term: "Alzheimer Disease"}) )
        RETURN path1, path2
        `,
        Result: &res1,
    }
    db.Cypher(&cq1)
    r := res1[0]
    fmt.Println(r.A, r.B)
}

我正在考虑在Go中编写自己的API包装器,如果我不能让现有的Go驱动程序正常工作,那么使用Neo4j的HTTP RESTful API;我是Golang的新手,我会感谢任何有关调试Go代码的建议或在Golang中使用Neo4j的技巧。谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

我知道你现在面对的是什么。在我遇到同样问题之前的某个时候。 有两种可能的情况: -

1)你应该总是声明struct variable Capital。

res1 := []struct { CAPITAL_STR1 string `json:"path1"` CAPITAL_STR2 string `json:"path2"` }{} 你正在做的A和B完全正确。

2)你必须粘贴精确的json类型(有错误)

res1 := []struct { CAPITAL_STR1 string `json:"path1.distance"` CAPITAL_STR2 string `json:"path2.distance"` }{}

要获得精确的json格式,请在浏览器中检查Neo4J的输出json响应。它在部分代码下可用。