首页 > 解决方案 > Gremlin 翻译器返回错误:“无法读取未定义的属性‘长度’”

问题描述

我正在尝试使用此处描述的翻译功能: https ://tinkerpop.apache.org/docs/3.4.11/reference/#translators

但我收到一个错误:“无法读取未定义的属性‘长度’”

我将其追溯到 Gremlin 源代码中的这一行: https ://github.com/apache/tinkerpop/blob/b84c3ece2a584f6634f1586f4b84c4e1c349595d/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js# L53

看起来instructions回来未定义。

这是我正在测试的代码:

const traversal = g.V().hasLabel("user").limit(1);
const translator = new gremlin.process.Translator("g");
console.log(translator.translate(traversal));

这发生在"gremlin": "3.5.0". 这是一个错误还是我错误地使用了这个功能?

标签: gremlinamazon-neptune

解决方案


你正在做文档所说的,我认为这是Translator应该使用的理想方式,但该translate()函数实际上需要一个Bytecode对象,因此正确的用法应该是:

const traversal = g.V().hasLabel("user").limit(1);
const translator = new gremlin.process.Translator("g");
console.log(translator.translate(traversal.getBytecode()));

因此,从某种意义上说,文档是错误的,它确实显示了所需的 API,而不是实际的 API。现在,您需要按上面所示调用它,但我已经为下一个版本推送了一个修复程序,允许它被调用,如文档中所示。


推荐阅读