Gremlin JS 3.4.0中的.project().by()存在问题

Gremlin JS 3.4.0中的.project().by()存在问题,gremlin,amazon-neptune,Gremlin,Amazon Neptune,我在gremlinjs3.4.0下看到.project().by()遍历返回{}。当我降级到3.2.10时,它们工作正常 gremlin> g.addV("trip").property(single, "trackName", "Ohio") ==>v[1] In Gremlin JS `3.4.0`: const result = await g.V("1").project("trackName").by("trackName").next(); 结果: { "va

我在gremlinjs
3.4.0
下看到
.project().by()
遍历返回
{}
。当我降级到
3.2.10
时,它们工作正常

gremlin> g.addV("trip").property(single, "trackName", "Ohio")

==>v[1]

In Gremlin JS `3.4.0`:

const result = await g.V("1").project("trackName").by("trackName").next();
结果:

{
  "value": {},
  "done": false
}
但当我降级到Gremlin
3.2.10
时,结果是正确的:

{
  "value": {
    "trackName": "Ohio"
  },
  "done": false
}
我是否需要更改在
3.4.0
中使用
project
的方式

编辑:根据不同版本测试的结果。我为一个gremlin版本运行每个测试,捕获结果,然后升级版本并再次运行测试。我只运行一个海王星实例,所以我们可以确定这是相同的数据

测试失败意味着它以以下形式返回数据:

"results": {
 "value": {},
 "done": false
}
对于控制台测试,我删除了最后的
.next()

我正在测试的环境是:

AWS Lambda节点8.10

AWS海王星1.0.1.0

编辑2:添加海王星测试期间使用的JS文件

index.js

const gremlin = require("gremlin");

const { DriverRemoteConnection } = gremlin.driver;
const { Graph } = gremlin.structure;

const initGremlinClient = () => {
  try {
    const dc = new DriverRemoteConnection(
      `ws://my-cluster.XXXXXXX.us-east-1.neptune.amazonaws.com:8182/gremlin`,
      {}
    );
    const graph = new Graph();
    return {
      g: graph.traversal().withRemote(dc),
      closeGremlinConnection: () => dc.close()
    };
  } catch (error) {
    console.log("[GREMLIN INIT ERROR]", error);
    throw new Error(error);
  }
};

exports.handler = async event => {
  const { g, closeGremlinConnection } = initGremlinClient();

  const result = await g
    .addV("test")
    .property("myProp", "myValue")
    .project("myProp")
    .by("myProp")
    .next();
  closeGremlinConnection();
  return result;
};
package.json

{
  "name": "gremlinTest",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "gremlin": "3.4.0"
  }
}

我和AWS团队的人谈过。Gremlin
^3.3.5
和Lambda之间存在影响互操作性的错误。具体来说,问题在于底层GraphSON v3引擎以及Lambda如何解析JSON

临时解决方法是在实例化
DriverRemoteConnection
时回到GraphSON v2:

const dc = new DriverRemoteConnection(
  `ws://my-neptune-cluster.us-east-1.neptune.amazonaws.com:8182/gremlin`,
  { mimeType: "application/vnd.gremlin-v2.0+json" } // Fall back to GraphSON v2
);

编辑:此问题在
gremlin@3.4.6

在您的示例中,您创建了一个名为“trackName”的属性,但搜索了一个名为“trackLength”的属性,如果“trackLength”不存在,我想这会导致一个空结果。哎呀,这是示例中的一个输入错误。我会纠正这个问题,但问题仍然存在。我已经在几个顶点和属性上复制了它。谢谢你的接听。正如我在一个与3.4.0使用有关的问题中所建议的那样,我会考虑使用3.3.5与海王星至少直到他们宣布官方支持3.4.0。虽然3.4.0通常应该与3.3.x配合使用,但在大的方面(比如错误地使用仅在3.4.0中可用的步骤)和细微的方面(可能像您现在所经历的那样),都可能会给您带来麻烦。如果您尝试3.3.5,但仍然有一个问题,这在我的脑海中会是更意想不到的。请告诉我们您是否尝试过该版本并最终遇到了相同的问题。@stephenmallette 3.3.5.3.2.11中似乎存在相同的问题,这是没有此问题的最新版本。我已经用3.3.5和3.4.0进行了测试。