Nebula go 执行结果ResultSet 如何获取点和边(Node 、Relationship)

2.0
Nebula go 执行结果ResultSet 如何获取点和边
我看到有Node 和Relationship 的定义,怎么在结果中获取
Node 和Relationship 应该是在前端图展示中用吧

看这里 https://github.com/vesoft-inc/nebula-go/blob/master/example/graph_client_example.go

这里只有row 和record,我是想获取node和Relationship

例子里面有record拿ValueWrapper,然后ValueWrapper就可以拿Node和Relationship, 你可以看ValueWrapper的方法,有 asNode() 和 asRelationship()
https://github.com/vesoft-inc/nebula-go/blob/master/value_wrapper.go

NBA数据集
GO FROM “Amar’e Stoudemire” OVER like
LOOKUP ON player
查询出来的数据ResultSet中的ValueWrapper都是value,没有Node和Relationship
怎么写查询语句,查出的数据是Node和Relationship

你去看match的语法或者子图的
https://github.com/vesoft-inc/nebula-docs/blob/master/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md
https://github.com/vesoft-inc/nebula-docs/blob/master/docs-2.0/3.ngql-guide/16.subgraph-and-path/1.get-subgraph.md

1 个赞

asNode() 和 asRelationship()获取的Node 和 Relationship 目前不能被外部包访问,需要修改

好的,感谢你的反馈,我们尽快修复。

你好,我在本地测试了没有发现你说的情况,能说一下你是怎么调用的吗?返回的Node和Relationship都是puclic的,按理说都可以访问到的

上面没有说清楚,不是node不能访问,是node中vertex不能访问,
1、需要提供的获取vertex的方法
2、Values方法中获取的属性也不知是哪个tag
3、string()方法是否也可以改为public
4、ValueWrapper 也需要一个NewValueWrapper的方法

感觉node的设计思想只是用于数据展示,但是在前端展示后也有修改数据的需求,所以node中需要获取vertex的信息

是的,感谢你的反馈。

  1. 为什么要获取vertex,是为了修改是吗?我觉得我们不应该提供让用户直接修改原始数据的接口,但是你可以通过拿到数据构造一个新的数据结构,这个我们应该是要提供。
  2. 你说到Values不知道是哪个tag,这不应该的,本身通过这个接口拿数据的时候就是要指定tag的。
  3. string() 是要放开的
  4. ValueWrapper和1提供一样的就可以。

value_wrapper.go 中的String()方法中,下面的代码多了双引号,本来已经是string类型,加了双引号导致返回的值多了引号
} else if value.IsSetSVal() {
return " + string(value.GetSVal()) + "

就是要加"" 才表示它是个string,tostring() 主要是用于展示的。