我已经在这个问题上工作了几个小时,而且我还没有为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的技巧。谢谢你的时间。
答案 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响应。它在部分代码下可用。