为了账号安全,请及时绑定邮箱和手机立即绑定

Golang/neoism:调用查询返回的对象方法导致panic

Golang/neoism:调用查询返回的对象方法导致panic

Go
慕标5832272 2021-09-09 21:22:29
当尝试调用通过调用返回的 Node 对象的方法时neoism.CypherQuery,我不断收到“无效的内存地址或 nil 指针取消引用”的恐慌。查询返回一些东西(访问作品的Data属性Node),但调用任何方法都会导致恐慌。这些方法有接收器*Node,不是Node,但是应该可以工作的 AFAIK?无论如何,我已经尝试获取指向该对象的指针并在其上调用该方法,但这也不起作用。我真的卡在这里了...重现问题的示例代码(需要 neoism 和 go-uuid 包以及在本地主机上运行的 Neo4J DB):package mainimport (    "code.google.com/p/go-uuid/uuid"    "fmt"    "github.com/jmcvetta/neoism")func main() {    neo, _ := neoism.Connect("http://localhost:7474/db/data")    // create a node with a random id    nodeId := uuid.New()    _, err := neo.CreateNode(neoism.Props{"NodeId": nodeId})    if err != nil {        fmt.Println(err)        return    }    fmt.Println("node created, id", nodeId)    // find the node by the id    res := []struct {        Node neoism.Node `json:"nodes"`    }{}    err = neo.Cypher(&neoism.CypherQuery{        Statement:  `MATCH (nodes {NodeId:{NodeId}}) RETURN nodes`,        Parameters: neoism.Props{"NodeId": nodeId},        Result:     &res,    })    if err != nil {        fmt.Println(err)        return    }    fmt.Println("query executed")    // try to work with the query results    if len(res) > 0 {        // get Data -> works        fmt.Println(res[0].Node.Data)        // call method -> panics        err = res[0].Node.SetProperty("TestProp", "TestValue")        if err != nil {            fmt.Println(err)            return        }    }}这是堆栈跟踪的相关部分:goroutine 1 [running]:github.com/jmcvetta/neoism.(*entity).SetProperty(0x119abc00, 0x5d3a68, 0x8, 0x5d3a88, 0x9, ...)        .../src/github.com/jmcvetta/neoism/entity.go:26 +0x104main.main()        .../src/nieware/neoprob/neoprob.go:41 +0x4cb
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信