我是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时,我看不到这里要查询的数据库?
答案 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)
gremlin
(titan-node
的依赖关系)使用node-java
,这是一个在节点和Java之间提供桥梁的模块。 node-java
允许您导入Java类,实例化Java数据类型等。
所以你所看到的是node-java
导入特定的Java类,因为Gremlin是Java / JVM的东西。