如何解决在 gremlin-node.js/gremlin-server 中设置属性不起作用
我想使用 gremlin 的 javascript 驱动程序从 node.js 后端在 gremlin-server 中创建一个图形。当我添加了两个属性,一个 id 和一个用户名时,id 有效,但不存储用户名。代码如下:
const gremlin = require('gremlin');
const traversal = gremlin.process.AnonymousTraversalSource.traversal;
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;
const g = traversal().withRemote(new DriverRemoteConnection('ws://localhost:8182/gremlin'));
const { t: { id } } = gremlin.process;
const { cardinality: { single} } = gremlin.process;
async function createuser(userid,username) {
const vertex = await
g.addV('User')
.property(id,userid)
.property(single,'username',username)
.iterate();
return vertex;
}
await createuser(1001,"testuser")
输出是(当我用 g.V(1001).listAll();
搜索节点时)属性总是 undefined
。
[Vertex { id: 1001,label: 'User',properties: undefined }]
gremlin 服务器使用以下命令通过 docker 加载/运行:
docker pull tinkerpop/gremlin-server
docker run -d -p 8182:8182 --name gremlin tinkerpop/gremlin-server
- node.js 中的 gremlin-driver 有一个版本:
"gremlin": "^3.4.10",
我已经尝试过使用和不使用上面的单数基数,添加了更多的属性,但非工作正常。互联网搜索显示了一些带有 .property
步骤的 gremlin-console(groovy) 工作示例,但没有提示 gremlin 和 gremlin-server 的组合 node.js-driver。
解决方法
我想您的代码运行良好并且属性存在。问题是从查询返回的图形元素只是“引用”——这意味着,它们只包含 id 和标签,没有属性。您应该使用 Map
之类的步骤将结果转换为使用 elementMap()
之类的通用容器。您可以在不同地方的文档中找到更多关于此的讨论,但也许从 this 开始,如果您更感兴趣的是为什么会这样以及改变它会涉及哪些挑战,请参阅 {{ 3}}。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。