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();