我正在尝试针对远程JanusGraph实例通过https执行gremlin脚本。我已将问题过滤到尝试使用顶点变量添加边的部分。我试图添加两个顶点,将结果分配给变量,然后使用它们添加边。我也想避免使用像g.V().addV(..).aaddV(..).addE(..)
这样的单行脚本,因为脚本背后的程序逻辑
以下gremlin在gremlin控制台中工作(远程会话)
def graph=ConfiguredGraphFactory.open("ga");
def g = graph.traversal();
v1=g.addV('node1');
v2=g.addV('node2');
v1.addE('test').to(v2);
但是当我尝试通过https(针对compose-janusgraph服务器发出)执行相同操作时,出现错误。我确实将.iterate()
添加到了addV()
中,如果我删除了addE(..)
行,则会添加顶点。但是当我尝试
{"gremlin":"def graph=ConfiguredGraphFactory.open('ga');
def g = graph.traversal();
v1=g.addV('node16').property('name','testn16').iterate();
v2=g.addV('node17').property('name','testn2').iterate();
v1.addE('test18').to(v2);
g.tx().commit()"}
我得到了例外
遍历策略已经完成,遍历不再 被调制“,” Exception-Class“:” java.lang.IllegalStateException“
还请注意,在通过curl发送之前,我将整个gremlin合并为一行。为了便于阅读,我将它们拆分为换行符。任何帮助都会很棒。 -谢谢
答案 0 :(得分:2)
iterate()
不会返回Vertex
...它只是遍历遍历以产生副作用(即,图形获得了添加的顶点,但未返回结果)。您可能只需要这样做:
{"gremlin":"graph=ConfiguredGraphFactory.open('ga');
g = graph.traversal();
g.addV('node16').property('name','testn16').as('v1').
addV('node17').property('name','testn2').as('v2').
addE('test18').from('v1').to('v2').iterate();
g.tx().commit()"}