Gremlin查询在控制台可正常运行但JavaScript Lambda中报in不是函数错误
问题原因
in是JavaScript的内置保留关键字,用于for...in循环、属性存在判断等原生语法中,不能直接作为方法名使用。因此Gremlin官方的JavaScript语言驱动(GLV)在实现时,已经将原本Gremlin语法中的in()步骤重命名为in_()避免冲突。- Gremlin控制台默认使用Groovy语法解析查询,Groovy中不存在该命名冲突,因此同样的语句在控制台可以正常运行,放到JS代码中就会触发方法不存在的报错。
解决方案
将查询中的.in("memberOf")替换为.in_("memberOf")即可正常执行,修改后的代码如下:
const people = await g.V("1").out("memberOf").in_("memberOf").next()
同类问题参考
如果遇到其他类似的方法不存在报错,可优先检查是否是Gremlin步骤名和JS保留字冲突的情况,常见的冲突改名对应关系:
as()改为as_()from()改为from_()not()改为not_()
内容的提问来源于stack exchange,提问作者xeroshogun
相关产品推荐
相关产品推荐

