2015-04-14 4 views
1

Я делаю поисковое приложение с помощью Node.js и Neo4j, что позволяет пользователям отправлять запрос обхода графика через веб-интерфейс пользователя. Я хочу дать пользователям возможность отменить запрос после его отправки (т. Е. Если пользователь решит изменить параметры запроса). Таким образом, мне нужен способ прервать запрос, используя либо команду из драйвера Node.js-to-Neo4j, либо через запрос Cypher.Как отменить запрос по требованию с помощью драйверов Neo4j

После нескольких часов поиска я не смог найти способ сделать это с помощью любого из драйверов Node.js-to-Neo4j. Я также не могу найти запрос cypher, который позволяет убить запрос. Я что-то пропускаю, или это невозможно с Neo4j? В настоящее время я использую Neo4j 2.0.4, но я готов перейти на новую версию Neo4j, если у нее есть возможности для убийства запросов.

ответ

4

Начиная с версии Neo4j версии 2.2.0, можно убивать запросы из пользовательского интерфейса и через интерфейс REST. Я не знаю, поддерживают ли существующие драйверы nodejs эту функцию, но если нет, вы все равно можете достичь той же функциональности, выполнив HTTP-запрос к интерфейсу REST.

Если вы запустите запрос в браузере версии 2.2.x или выше, вы заметите, что в правом верхнем углу области, где выполняются и отображаются запросы, есть ссылка (X).

Вы можете добиться тех же результатов, обернув свои запросы в транзакции и вернув их обратно. Фактически, я только что открыл веб-инспектора, чтобы увидеть, как пользовательский интерфейс браузера отменяет выполняемые запросы.

Я думаю, что это было бы рекомендуемый подход:

  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

Вы найдете более информация о конечной точке транзакции Cypher HTTP и примеры in the official docs.

Обновление: node-neo4j, похоже, поддерживает обработку транзакций, включая откат. See docs.

+0

Будет ли использовать метод обертывания запроса в транзакции с версиями версии 2.0.x neo4j, или это новая функция 2.2.x? –

+0

AFAIK это не будет. Можно начинать транзакции, совершать транзакции и откаты, но я не думаю, что можно отменить выполнение запроса. – albertoperdomo

+0

Хорошо, похоже, что я буду обновлять экземпляр Neo4j до 2.2.x. Спасибо! –