如何通过javascript REST客户端处理Neo4j服务器中的索引

How to handle indices in Neo4j server via javascript REST client?

本文关键字:服务器 索引 Neo4j 处理 何通过 javascript REST 客户端      更新时间:2023-09-26

我在独立的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);
...

索引节点未定义。我尝试了几种不同的组合。没有快乐。如何使用此命令?

此外,getIndexedNodes(( 需要一个键值对。有没有办法在不循环的情况下获取索引中的所有或项目子集?

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

索引节点未定义。我尝试了几种不同的组合。没有快乐。如何使用此命令?

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

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

您可以在自述文件引用的示例 node-neo4j 模板应用程序中看到如何使用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 模板应用程序。它涵盖了库公开的以及典型应用所需的广泛功能。

希望这有帮助。 =(

Neo4j 2 允许您通过 REST 执行索引。

REST 指示