被所有这​​个节点困惑 - >泰坦的东西

时间:2014-08-28 16:37:41

标签: node.js gremlin titan tinkerpop

我是Java,Gremlin,Nodejs,Tickerpop,Maven以及其他所有新手。这段代码有什么作用?特别是' java.import'在做什么?它是Java类吗?这与Titan有什么关系?

var Titan = require('titan-node');
var gremlin = new Titan.Gremlin({ loglevel: 'OFF' });

var TinkerGraphFactory = gremlin.java.import('com.tinkerpop.blueprints.impls.tg.TinkerGraphFactory');
var graph = TinkerGraphFactory.createTinkerGraphSync();
var g = gremlin.wrap(graph);

g.V('name', 'marko').next(function (err, v) {
    v.getProperty('name', function (err, value) {
        console.log(value);
    });
});

为什么当我使用Rexster时,我看不到这里要查询的数据库?

2 个答案:

答案 0 :(得分:6)

添加到@mscdex有效答案。

这是使用通过node-java直接Java绑定的Node.js中的JavaScript风格的Gremlin代码。

Gremlin本身不是语言,而是DSL。它大部分时间是用Groovy编写的(因为它缩短了Java语法),但它也存在于任何符合JVM的语言中(即Java,Groovy,Scala,通过rhino的JavaScript和现在使用Java 8的nashorn,以此命名)一些)。输入Gremlin查询/脚本时可以访问完整的Groovy / Java API,这使它成为一种图灵完整的“语言”。

我建议您阅读http://gremlindocs.com/http://sql2gremlin.com,了解有关Gremlin的有趣初学者资源。 http://www.tinkerpop.com/docs/3.0.0.M1/将为您提供有关TinkerPop和Gremlin的详细信息(注意:链接将随着官方v3.0文档的发布而中断)。

由于node-java的工作方式和公开Java方法(sync / async),你需要在这里使用回调以阻止事件循环。这是一个JavaScript问题,严格来说与Gremlin毫无关系。

还有一些其他客户端没有直接绑定到JVM,但是对于TinkerPop 2.x使用HTTP(对于Node.js是https://github.com/gulthor/grex)或者对于TinkerPop 3.0+(https://github.com/gulthor/gremlin-client,对于Node使用WebSocket .JS / browsers,它将成为官方的TP3 JavaScript驱动程序)。注意:TinkerPop成员/ lib作者在这里。

答案 1 :(得分:1)

gremlintitan-node的依赖关系)使用node-java,这是一个在节点和Java之间提供桥梁的模块。 node-java允许您导入Java类,实例化Java数据类型等。

所以你所看到的是node-java导入特定的Java类,因为Gremlin是Java / JVM的东西。