Node-Neo4j: как проверить, удалось ли удалить узел с помощью шифрозапроса?

Я использую модуль npm node-neo4j и использую вызов db.cypherquery () для вызова cypher-запросов из моего js-приложения node. Я пытаюсь удалить связь между двумя узлами, и я хотел бы определить, было ли удаление успешным или неудачным.

См. Фрагмент кода ниже:

var cypherQuery = "MATCH (u1:User {id: '10'})-[r:LIKES]->(u2:User {id: '20'}) DELETE r;";
db.cypherQuery(cypherQuery, function(err, result){
            if(err) throw err; //does err indicate that delete failed, or something else (such as a syntax error in the cypher query)?

//do something based on whether delete succeeded or failed here

});

Итак, как показано выше, как лучше всего выявлять случаи, подобные приведенным ниже: 1) Соответствующая взаимосвязь не найдена, поэтому удалять нечего 2) Связь была найдена и успешно удалена 3) Связь была обнаружена, но была некоторая другая ошибка при его удалении 4) В скрипте cypher была синтаксическая ошибка (я думаю, это обнаруживается через значение err)


person Gaurav Jain    schedule 08.05.2017    source источник
comment
Вам следует рассмотреть возможность использования официального драйвера Javascript neo4j вместо стороннего пакета, который похоже, больше не поддерживается (последняя фиксация была около 2 лет назад).   -  person cybersam    schedule 08.05.2017


Ответы (2)


Вы можете выполнять DELETE и RETURN одновременно, поэтому DELETE r RETURN COUNT(r) удалит совпавший r и вернет номер удаленного r (или RETURN r для списка удаленных r)

person Tezra    schedule 08.05.2017

Это не очень хорошо задокументировано, но можно получить доступ к количеству удаленных узлов следующим образом:

result.summary.counters.nodesDeleted()

По моей ссылке вы увидите, что он ссылается на класс StatementStatistics, но этот класс нигде не определен в документации (это похоже на упущение, поскольку это общедоступный API). Вы можете найти определение этого класса в источник ResultSummary (и в нем есть счетчики для отношений и еще много чего другого).

person rmeador    schedule 23.06.2019