【发布时间】:2017-07-17 15:01:26
【问题描述】:
我正在使用一个简单的 Gremlin RESTful 服务器,并且在 POST 请求中发送简单的命令。例如,如果我想创建边(以我的特定格式),我有以下模板:
const nodeCommandFormat = "graph.addVertex('%s', '%s', 'evid', '%s');";
使用这样的链接命令发送一个长字符串可以正常工作,所有边缘都已创建。我的问题是:为什么它不适用于边缘创建?到目前为止,我尝试了这两个命令:
const newEdgeCommandFormat = "g.V().has('evid', '%s').addE('next').to(g.V().has('evid', '%s')).property('count', 1);";
或
x = g.V().has('evid', ...).next(); y = g.V().has('evid', ...).next(); x.addEdge('next', y, 'count', 1);
但是,如果我像这样连接 100 个命令,则只会创建与最后一个命令对应的边。这是为什么?另一方面,我也收到这样的错误:
- 使用第一种类型的边缘创建n:[WARN] HttpGremlinEndpointHandler - 无效请求 - 以 500 内部服务器错误响应,并且提供的遍历器未映射到值:v[3091]->[TinkerGraphStep(vertex ,[evid.eq(6ba0b28797dd79a2ee198d8ff280c4ff)])]
- 使用第二种边创建方式:java.util.NoSuchElementException 在 org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.next(DefaultTraversal.java:204)
如何使用 Gremlin REST 服务器实现动态边缘创建?
附:我所有的节点都有“evid”属性(event-id),它是一个对象的 md5 值。我将其用作节点的标识符。
谢谢!
【问题讨论】:
标签: javascript gremlin tinkerpop tinkerpop3 gremlin-server