我尝试了各种调用sideEffect()的方法,但是没有用,我在网上找不到任何文档或示例,并且源代码太抽象了,以至于我不花大量时间查看就无法理解它。
例如:
const y = await g.V().hasId('a4b64522-9cda-1b34-8f76-634242933a0d').sideEffect('drop()').next();
结果
Error: Server error: {"requestId":"8915089a-cde3-4861-b73a-2534cefbc0b2","code":"InternalFailureException","detailedMessage":"Could not locate method: NeptuneGraphTraversal.sideEffect([drop()])"} (599)
在有问题的情况下,我正在对AWS Neptune运行这些遍历(尽管针对Neptune通过Python和Gremlin Console运行类似的查询)。
答案 0 :(得分:2)
sideEffect()
步骤需要花费anonymous traversal,因此我在您的previous question中提供的语法在包括JavaScript在内的所有Gremlin语言变体中都应能很好地工作:
g.V().hasId('a4b64522-9cda-1b34-8f76-634242933a0d').sideEffect(drop())
drop()
当然是从__
衍生而来的,应该是您standard imports的一部分,可以更明确地称为:
const __ = gremlin.process.statics;
g.V().hasId('a4b64522-9cda-1b34-8f76-634242933a0d').sideEffect(__.drop())
您在问题中描述的错误与您使用drop()
作为字符串值的用法有关。就是说,我想海王星有可能根本不支持sideEffect()
?您可以使用合法语法通过更简单的遍历对其进行测试,然后查看是否遇到相同的错误:
g.V().hasId('a4b64522-9cda-1b34-8f76-634242933a0d').sideEffect(__.constant(1))
如果遍历返回一个Vertex
并带有您正在查询的指定ID,并且您没有看到错误,那么我认为sideEffect()
是受支持的步骤。也许具有更多海王星经验的人将能够为您提供更正式的答案。