0

我在独立的 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:(索引,属性,值,_)->”

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

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

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

4

2 回答 2

1

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

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

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

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

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

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应用程序。它涵盖了库公开的以及典型应用程序需要的广泛功能。

希望这可以帮助。=)

于 2012-05-16T12:54:13.687 回答
0

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

休息指数

于 2014-08-11T14:49:09.360 回答