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()
По моей ссылке вы увидите, что он ссылается на StatementStatistics
class, но этот класс нигде не определен в документации (это похоже на упущение, поскольку это общедоступный API). Вы можете найти определение этого класса в источнике изResultSummary
(и в нем есть счетчики для отношений и еще куча прочего).