我注意到通过查看orientdb-gremlin库的java源代码,它似乎只是一个获取gremlin命令并转换为orientdb SQL查询的包装器。
我想在javascript(NodeJs)中使用带有orientdb的gremlin,为此我使用的是gremlin
js库。我可以很好地连接到gremlin服务器(我使用的是OrientDB 3.0.14附带的服务器)但是我还不能使事务工作有两个原因:1)gremlin
js库在Graph中没有tx()方法宾语。 2)我想:“我可以在那里添加它,但是如果OrientDB支持从gremlin服务器打开一个事务,那么让我先看看gremlin控制台”。所以从gremlin控制台尝试似乎也不起作用(记住我不想使用orientdb-gremlin
插件,因为在javascript中我将无法使用它):
gremlin> :remote connect tinkerpop.server conf/remote-secure.yaml
gremlin> :> g.tx().open()
gremlin> :> g.tx().isOpen()
最后一个命令导致false
,因此没有打开任何事务。
有没有办法通过gremlin服务器跨越OrientDB 3.0.14事务?
假设orientdb-gremlin
支持g.tx()
(真正的graph.tx()
,由g.tx()
调用 - 即Graph
实例需要支持它),那么你使用javascript中的事务的唯一方法就是你将基于字符串的脚本提交给Gremlin Server并通过session这样做。我认为这可能是因为你没有看到isOpen()
以无会话的方式连接到服务器时返回true
- 您可以通过执行以下操作来改变它:
:remote connect tinkerpop.server conf/remote.yaml session
这是讨论here。
提交基于字符串的脚本并不是与Gremlin Server交互的推荐方式。在本机编程语言中“编写Gremlin”而不是将Gremlin嵌入到字符串中是一种更好的开发体验。如果可以的话,我会重新考虑这种方法,并尽量不依赖特定于图表的交易。他们让你的代码远远less portable。