Node-Neo4j: Как проверить, удалось ли киберзапросу удалить узел?

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

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

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) В скрипте шифра произошла синтаксическая ошибка (я думаю, что это обнаруживается через значение err)

1 ответ

Решение

Вы можете сделать УДАЛЕНИЕ и ВОЗВРАТ одновременно DELETE r RETURN COUNT(r) удалит совпадающее r и вернет номер удаленного r (или RETURN r список удален)

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

result.summary.counters.nodesDeleted()

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

Другие вопросы по тегам