【发布时间】:2021-07-28 00:11:58
【问题描述】:
我正在尝试使用 gremlin 和具有特定标签的 js 获取所有节点及其属性。
它应该输出如下内容:
[
{
p1:v1,
p2:v2,
px:vx
},
{
p1:v1,
p2:v2,
px:vx
}
]
我现在尝试了一百万件事,但我认为它应该可以工作:
g.V().hasLabel("myLabel").valueMap();
或
g.V().hasLabel("myLabel").map(p.valueMap()).toList();
但他们都回来了
[
{},
{}
]
我不明白,因为如果我这样做:
g.V().hasLabel("myLabel").map(p.values().fold()).toList();
我得到了一个我想要的列表,但只有值。
【问题讨论】:
-
假设有带有该标签的顶点,那么您需要做的就是
g.V().hasLabel("myLabel").valueMap().next(),但您还需要await在使用Node/Javascript 客户端时返回该查询。这会产生任何结果吗? -
@KelvinLawrence 我这样问:
return await g.V().hasLabel("myLabel").valueMap().next();得到回复:{"value": null, "done": true}。为了清楚起见,数据库中有我的标签的顶点 -
@KelvinLawrence 在没有
.next()的情况下尝试过,我得到[["V"],["hasLabel","myLabel"],["valueMap"]]作为回应。还尝试在TinkerFactory.createModern()测试数据库上使用person标签进行相同的查询,它按预期工作¿这可能是Gremlin + Neptune 的错误吗? -
如果没有
.next(),您实际上并没有将查询发送到 Neptune,因为没有“终端”步骤。您所看到的只是当您添加next()时将发送到 Neptune 的查询字节码。您使用的是哪个版本的 Gremlin JS 客户端?另外,您的应用程序代码在哪里运行?如果它在 Lambda 函数中,则 Gremlin 客户端可能存在已知问题,我可以建议解决方法。 -
@KelvinLawrence 是的,我在 lambda 上运行。它的版本
3.5.1
标签: javascript gremlin gremlinjs