2016-09-27 73 views
1

我一直在研究這個問題幾個小時,而且我還沒有與Neo4j的社區Golang驅動程序運氣。如何在Go中的Neo4j數據庫上運行Cypher查詢?

我試圖運行「movies-go-cq」和「neoism」示例。 movies-go-cq示例不適用於我,it crashes when localhost:8080 is loaded in the browser

Cypher在我的Neo4j數據庫上使用neoism查詢只返回空白/空白數據。但是,當我在localhost:7474的Neo4j瀏覽器中運行相同的查詢時,將返回預期的數據。

這裏是Go代碼我與neoism運行:

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使用的Neo4j的HTTP REST的API,如果我不能得到現有轉到驅動程序才能正常工作,我自己的API包裝;我是Golang的新手,我會很感激任何有關調試Go代碼的建議或在Golang中使用Neo4j的技巧。感謝您的時間。

+2

[db.Cypher](https://godoc.org/github.com/jmcvetta/neoism#Database.Cypher)返回錯誤。你能捕捉到('err:= db.Cypher(&cq1)')並用'err'的值更新你的問題嗎? – algrebe

回答

0

我知道你現在面臨的是什麼。在我面臨同樣問題之前的一段時間。 有2種可能的情況存在: -

1)您應該始終聲明結構變量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格式輸出檢查JSON響應在你的Neo4J瀏覽器中。它在部分代碼下可用。

+0

謝謝,Shivendra!我將在明天工作時查看我的代碼,以檢查這一點。 – Grace