如何在Gremlin npm包中使用sideEffect()方法

时间:2019-08-13 11:41:05

标签: gremlin amazon-neptune

我尝试了各种调用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运行类似的查询)。

1 个答案:

答案 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()是受支持的步骤。也许具有更多海王星经验的人将能够为您提供更正式的答案。