如何使用Neo4j驱动程序中止查询

时间:2015-04-14 18:50:23

标签: node.js neo4j cypher node-neo4j

我正在使用Node.js和Neo4j创建一个搜索引擎应用程序,允许用户通过基于Web的用户界面提交图形遍历查询。我希望为用户提供在提交后取消查询的选项(即,如果用户决定更改查询参数)。因此,我需要一种方法来使用Node.js-to-Neo4j驱动程序中的命令或通过Cypher查询中止查询。

经过几个小时的搜索,我无法使用任何Node.js-to-Neo4j驱动程序找到一种方法。我似乎也找不到允许查询查询的密码查询。我是否忽略了某些东西,或者这对Neo4j来说是不可能的?我目前正在使用Neo4j 2.0.4,但如果它具有查询查杀功能,我愿意升级到更新版本的Neo4j。

1 个答案:

答案 0 :(得分:4)

从Neo4j 2.2.0开始,可以通过UI和REST界面终止查询。我不知道现有的nodejs驱动程序是否支持此功能,但如果不是,您仍然可以通过向REST接口发出HTTP请求来实现相同的功能。

如果您在2.2.x或更高版本的浏览器中运行查询,您会注意到执行和显示查询的区域右上角有一个(X)关闭链接。

通过将查询包装在事务中并将其回滚,可以获得相同的结果。实际上,我刚刚打开了Web检查器,看看浏览器UI是如何取消正在运行的查询的。

我认为这是推荐的方法:

  1. 使用您要运行的Cypher查询开始事务。将为交易分配一个标识符,即请求POST http://localhost:7474/db/data/transaction和响应Location: http://localhost:7474/db/data/transaction/7
  2. 如果您要取消查询,请使用您在步骤1中获得的标识符删除该交易,即DELETE http://localhost:7474/db/data/transaction/7
  3. 您将找到有关Transactional Cypher HTTP端点和示例in the official docs的更多信息。

    更新:node-neo4j似乎支持事务处理,包括回滚。 See docs