【问题标题】:How to handle indices in Neo4j server via javascript REST client?如何通过 javascript REST 客户端处理 Neo4j 服务器中的索引?
【发布时间】:2012-05-15 21:39:53
【问题描述】:

我在独立的 Neo4j REST 服务器中有数据,包括节点索引。我希望纯 JavaScript 客户端连接到 Neo4j 并将格式化数据提供给 d3.js,这是一个基于 Node.js 构建的可视化库。

JugglingDB 非常流行,但 Neo4j 实现“错误”:https://github.com/1602/jugglingdb/issues/56

github 上的下一个最受欢迎的选项是:https://github.com/thingdom/node-neo4j 查看方法定义https://github.com/thingdom/node-neo4j/blob/develop/lib/GraphDatabase._coffee

我可以使用“getNodeById: (id, _) ->”

> node1 = db.getNodeById(12, callback);

从 REST 服务器返回输出,包括节点属性。太棒了。

我不知道如何使用“getIndexedNodes: (index, property, value, _) ->”

> indexedNodes = db.getIndexedNodes:(index1, username, Homer, callback);
...

indexedNodes 没有被定义。我尝试了几种不同的组合。没有喜悦。如何使用此命令?

另外,getIndexedNodes() 需要一个键值对。有什么方法可以在不循环的情况下获取索引中的所有项目或项目的子集?

【问题讨论】:

    标签: javascript node.js rest neo4j d3.js


    【解决方案1】:

    node-neo4j 的作者/维护者之一。 =)

    indexedNodes 没有被定义。我尝试了几种不同的组合。没有喜悦。如何使用此命令?

    您的示例似乎有一些语法错误。 index1usernameHomer 变量是否在别处定义?假设不是,即假设这些是实际的索引名称、属性名称和值,则需要将它们引用为字符串文字,例如'index1''username''Homer'。但是您在不应该存在的左括号之前也有一个冒号。 (这就是导致 Node.js REPL 无法理解您的命令的原因。)

    然后,注意indexedNodes 应该undefined -- getIndexedNodes() 和大多数 Node.js API 一样,是异步的,所以它的返回值是 undefined。因此回调参数。

    您可以在自述文件引用的示例node-neo4j-template 应用程序中查看如何使用getIndexedNodes() 的示例:

    https://github.com/aseemk/node-neo4j-template/blob/2012-03-01/models/user.js#L149-L160

    另外,getIndexedNodes() 需要一个键值对。有什么方法可以在不循环的情况下获取索引中的所有项目或项目的子集?

    getIndexedNodes() 确实返回所有匹配的节点,因此不需要循环。 Neo4j 的 REST API 不支持直接获取子集,但您可以使用 Cypher 获得结果。

    例如返回按用户名字母顺序排序的第 6-15 个用户(假设他们将 type 属性设置为 user):

    db.query([
      'START node=node:index1(type="user")',
      'RETURN node ORDER BY node.username',
      'SKIP 5 LIMIT 10'
    ].join('\n'), callback);
    

    不过,Cypher 仍在快速发展,因此请务必参考与您使用的 Neo4j 版本相匹配的文档。

    如上所述,一般来说,看一下示例node-neo4j-template 应用程序。它涵盖了该库公开的以及典型应用所需的广泛功能。

    希望这会有所帮助。 =)

    【讨论】:

    • 我在发送此消息后不久就意识到 node-neo4j 支持 Cypher。我认为我的语法是错误的,webadmin 控制台在解决这个问题上很有帮助。非常感谢您的全面回答!
    【解决方案2】:

    Neo4j 2 允许您通过 REST 进行索引。文档在这里

    REST Indicies

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 2014-04-11
      • 1970-01-01
      • 2011-03-05
      • 2017-02-02
      • 1970-01-01
      • 2011-09-01
      相关资源
      最近更新 更多