Json 将neo4j结果解组到Golang中的嵌套结构
我正在使用neoism库()与一个本地neo4j数据库进行对话——我对neo4j来说是个新手,所以我对neo4j的理解上的差距可能在问题的任何一方 我有一个简单的数据库,一个“页面”节点,它与一个“模板”节点相关。我希望能够用struct来表示每个节点,并将它们嵌套在另一个节点中,但我正在努力让它工作 创建简单数据库:Json 将neo4j结果解组到Golang中的嵌套结构,json,go,neo4j,unmarshalling,Json,Go,Neo4j,Unmarshalling,我正在使用neoism库()与一个本地neo4j数据库进行对话——我对neo4j来说是个新手,所以我对neo4j的理解上的差距可能在问题的任何一方 我有一个简单的数据库,一个“页面”节点,它与一个“模板”节点相关。我希望能够用struct来表示每个节点,并将它们嵌套在另一个节点中,但我正在努力让它工作 创建简单数据库: template, err := ioutil.ReadFile(viewPath + "templates/default.mustache") if err != nil{
template, err := ioutil.ReadFile(viewPath + "templates/default.mustache")
if err != nil{
panic(err)
}
defaultTemplate, _ := db.CreateNode(neoism.Props{
"name": "default",
"content": string(template),
})
defaultTemplate.AddLabel("Template")
n0, _ := db.CreateNode(neoism.Props{
"name": "Home",
"slug": "home",
"title": "Home Page",
"content" : "here I am",
})
n0.AddLabel("Page")
n0.Relate("TEMPLATE", template.Id(), neoism.Props{})
现在让我们来谈谈如何把数据拿回来
以下是我的查询,效果很好:
type PageStruct struct{
Name string `json:"p.name"`
Slug string `json:"p.slug"`
Title string `json:"p.title"`
Content string `json:"p.content"`
TemplateName string `json:"t.name"`
TemplateContent string `json:"t.content"`
}
res := []PageStruct{}
cq := neoism.CypherQuery{
Statement: `
MATCH (p:Page)-[r:TEMPLATE]->(t:Template)
WHERE p.slug = {slug}
RETURN p.name, p.slug, p.title, p.content, t.name, t.content
`,
Parameters: neoism.Props{"slug": pageSlug},
Result: &res,
}
db.Cypher(&cq)
page := res[0]
但理想情况下,我想要的是将其解组到嵌套结构中,如下所示:
type PageStruct struct{
Name string `json:"p.name"`
Slug string `json:"p.slug"`
Title string `json:"p.title"`
Content string `json:"p.content"`
Template struct {
Name string `json:"t.name"`
Content string `json:"t.content"`
} `json:"t"`
}
我一直在尝试各种各样的事情,但都没有成功,有谁能给我一些建议,告诉我如何实现这项计算机工程的壮举
此外,我还不清楚如何处理neo4j中的关系,因为没有强制执行(我知道)关系类型(例如一对一、一对多),所以如何处理-我们总是假设一个数据数组吗
非常感谢您的帮助/建议。请使用
游乐场:。感谢您的帮助,这对单个模板非常有效,但是如果我在页面上附加两个模板节点(我不需要这样做,但在其他查询中会这样做),两个模板都会被查询拉入,但我想知道如何用模板填充[]模板结构数组。在页面结构中包含[]模板不起作用。。。有什么想法吗?对不起,我从来没有和neo4j合作过。您必须查找文档,看看它是否可以生成JSON数组(如
[{“t.name”:“1”},{“t.name”:“2”}]
)以将它们解组到[]模板中,或者询问一个新问题。好的,感谢您对JSON编组的帮助,我将在下周继续调查
type Page struct {
Name string `json:"p.name"`
// ...
Template
}
type Template struct {
Name string `json:"t.name"`
// ...
}