Gremlin add relationship函数出现异常
请参阅以下代码:Gremlin add relationship函数出现异常,gremlin,Gremlin,请参阅以下代码: peopleObj.forEach( item=>{ let user = item.user; let event = item.event; var userNode = g.addV('user'); Object.keys(user).forEach(att=>{ console.log('att: ' + att+", val: "+ user[att]);
peopleObj.forEach( item=>{
let user = item.user;
let event = item.event;
var userNode = g.addV('user');
Object.keys(user).forEach(att=>{
console.log('att: ' + att+", val: "+ user[att]);
userNode.property(att, user[att]);
});
userNode.next();
console.log('created userNode');
eventNode = g.addV('event');
Object.keys(event).forEach(att=>{
console.log('att: ' + att+", val: "+ event[att]);
eventNode.property(att, event[att]);
});
eventNode.next();
console.log('created eventNode');
// const names = await g.V().hasLabel('event').values('name').toList();
// console.log(names);
var u_p = g.V().hasLabel('user').has('name',user.name).next();
var e_p = g.V().hasLabel('event').has('name',event.name).next();
var r1 = g.V(u_p).addE('triggers').to(e_p);
r1.next();
}
在控制台中运行时,我看到以下错误:
(node:30272) UnhandledPromiseRejectionWarning: Error: Server error: Could not locate method: DefaultGraphTraversal.to([{}]) (599)
at DriverRemoteConnection._handleMessage (/Users/frankhe/projects/aws/sam-app/hello-world/node_modules/gremlin/lib/driver/driver-remote-connection.js:180:9)
我遵循了Gremlin V3文档,为什么可以添加节点,但不能在这里添加边缘
另一个问题是在《小精灵》中,在创作之前检查存在的最佳方法是什么?如果您查看代码,我只是直接创建事件,但我需要避免重复的事件,我尝试使用文档中指示的等待,但nodeJS中根本没有等待。谁能告诉我小精灵提供的最佳方法
提前谢谢
答复:
我的小精灵点头是:
“小精灵”:“^3.3.4”
我的小精灵服务器是
apache-tinkerpop-gremlin-server-3.3.4
最重要的问题是,无论我怎么做,我总是会遇到这样的错误:
Server error: Could not locate method: DefaultGraphTraversal.to([{}])
我已经换了asyn way,但没用。有人能给我看一个使用nodeJS和Gremlin的工作示例吗
谢谢
简化版本如下:
var g1 = graph.traversal().withRemote(new DriverRemoteConnection('ws://localhost:8182/gremlin'));
var v1 = g1.addV('user').property('name','Frank').next(()=>{
console.log('created1')
var v2 = g1.addV('event').property('name','Event1').next(()=>{
console.log('created2')
g1.V(v1).addE('trigger').to(v2).property('weight',0.75).iterate();
});
});
但是在控制台里。我从来没见过他为created1记录信息
你能给我一个nodeJS中的工作示例吗?你在同一代码中混合了同步和异步执行 使用时请考虑:
userNode.next();
console.log('created userNode');
消息不正确next()
返回异步解析的Promise
(请参阅:)
正确的用法是:
userNode.next().then(() => console.log('created userNode'));
或者,如果您正在使用:
刚刚删除了
.next()
和g.V(v1)
调用,现在示例运行良好:
const v1 = await g.addV('person').property('name','marko');
const v2 = await g.addV('person').property('name','stephen');
await v1.addE('knows').to(v2).property('weight',0.75).iterate();
我正在使用:gremlin@3.4.1您使用的是什么版本的Gremlin Javascript?“你连接的是什么图形数据库?”斯蒂芬·马利特,请看我上述问题的答案。我觉得他们是同一个版本,那应该好吗?或者3.3.4太高了?请看我上面的修改,服务器错误总是有JS错误:找不到方法:DefaultGraphTraversal.to([{}])。知道为什么吗?
const v1 = await g.addV('person').property('name','marko');
const v2 = await g.addV('person').property('name','stephen');
await v1.addE('knows').to(v2).property('weight',0.75).iterate();