Node.js中Gremlin查询报错:图遍历对象无.from()函数
问题分析
你遇到的TypeError: ...addE(...).from is not a function错误,核心原因是Node.js版Gremlin驱动的API与Groovy语法存在差异:在Groovy中可以直接通过.from("x")引用之前的as标签,但JavaScript驱动中,from和to需要作为静态遍历步骤来调用,不能直接作为addE()的链式方法。
解决方案
你已经在代码中初始化了静态遍历器this.__ = gremlin.process.statics;,只需修改遍历语句,通过this.__.select()来引用之前标记的顶点即可:
await this.g.addV("foo").as("x").addV("bar").as("y").addE("relatesTo").from(this.__.select("x")).to(this.__.select("y")).next();
额外提示
你的构造函数直接调用了异步方法initNeptuneConnection(),但构造函数本身无法被标记为异步,这会导致db实例创建完成后,this.g可能还未完成初始化。建议调整为:
class dbManager { constructor() { // 避免在构造函数中直接调用异步方法 } initNeptuneConnection = async () => { // 原初始化代码... }; } // 外部主动触发初始化 (async () => { let db = new dbManager(); await db.initNeptuneConnection(); })();
内容的提问来源于stack exchange,提问作者Joseph Summerhays
相关产品推荐
相关产品推荐

