【问题标题】:Baffled by all this Node -> Titan stuff对所有这些 Node -> Titan 的东西感到困惑
【发布时间】:2014-08-28 16:37:40
【问题描述】:

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

【问题讨论】:

标签: node.js gremlin titan tinkerpop


【解决方案1】:

要添加到@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 官方文档的发布而中断)。

由于 node-java 的工作方式和公开 Java 方法(同步/异步),您需要在此处使用回调,以免阻塞事件循环。这是一个 JavaScript 问题,严格来说与 Gremlin 无关。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 太棒了。代码是使用 Java 还是 Groovy?我怎么知道是哪个?
    • Java 类将存储在机器的哪个位置?
    • 我的猜测是 Java,它会在 CLASSPATH 环境变量中查找,或者如果您没有明确使用 java.classpath
    猜你喜欢
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2013-08-21
    • 2014-06-28
    相关资源
    最近更新 更多