3

我是 Java、Gremlin、Nodejs、Tickerpop、Maven 和其他所有东西的新手。这段代码有什么作用?特别是“java.import”在做什么?它是一个Java类吗?这和泰坦有什么关系?

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 时看不到这里正在查询的数据库?

4

2 回答 2

6

添加到@mscdex 有效答案。

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

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 文档的发布而中断)。

Because of the way node-java works and exposes Java methods (sync/async), you're required to use callbacks here in order to not block the event loop. This is a JavaScript concern and has nothing to do with Gremlin strictly speaking.

There a couple other clients which do not bind to the JVM directly but uses HTTP for TinkerPop 2.x (https://github.com/gulthor/grex for Node.js) or WebSocket for TinkerPop 3.0+ (https://github.com/gulthor/gremlin-client, for Node.JS/browsers, which will become the official TP3 JavaScript driver). Note: TinkerPop member / lib author here.

于 2014-09-01T14:10:04.593 回答
1

gremlin( 的依赖titan-node) uses node-java,它是一个在 node 和 Java 之间提供桥梁的模块。node-java允许您导入 Java 类、实例化 Java 数据类型等。

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

于 2014-08-28T17:00:15.817 回答