scala - Scala / Neo4J - 删除/删除节点之间的关系路径并返回 true 或 false 作为结果
问题描述
我试图通过它们的 ID 删除两个特定节点之间的关系。我尝试了以下方法:
def deleteRelationship(nodeAID: String, nodeBID: String)(implicit neoFormat: NeoFormat[Node]) : Future[Boolean] = {
val txn = storeAPI.NeoTransaction()
val deleteQuery =
s"""
| MATCH relationship = (a: $NODE_A {id: "$NodeAID"})-[r]-(b: $NODE_B {id: "$NodeBID"})
| DELETE r
""".stripMargin
txn.querySingle(deleteQuery).flatMap {
result =>
txn.commit().map (_ => true)
}.recoverWith {
case e: Exception =>
logger.error(s"Error during deleteRelationship", e)
txn.rollback().map{_ => false}
}
}
我正在尝试删除两个特定节点之间的关系。当我尝试运行它时,该方法返回 false。我怀疑它与查询有关,而不是与 scala 方法有关,但无论如何我已经包含了它。
任何建议都会非常有帮助。
解决方案
txn.querySingle(deleteQuery)
确实期待一个结果。在原始方法中,没有按设计返回结果。但是,正因为如此,它跳过了带有 the 的块,txn.commit().map(_ => true)
因此永远不会返回 true。
添加RETURN r
到我的查询的末尾提供txn.querySingle(deleteQuery)
了一个结果,因此达到了txn.commit().map(_ => true)
.
我确信有一种更好的方法可以不依赖DELETE
查询结果,但这暂时解决了我的问题。
请随时添加任何更好的建议。如果提供建议,我会选择最佳答案。
推荐阅读
- c++ - 当 unique_ptr 在向量中时,对 std::unique_ptr<> 拥有的对象的引用/ptr 是否安全?
- r - 如何根据字符串过滤行,但前提是字符串出现多次
- excel - VBA代码在列中查找字符串,然后按空格将字符串拆分到偏移位置
- reactjs - Firebase 动态链接不适用于带有电容器的 ios
- hive - 如何在 2.2.0 以上版本的 hive 中开启隐式类型转换?
- javascript - 问题设置从 react-native-location 取消订阅到状态变量
- angular - Angular / .NET Core 项目上的 Cors 问题
- php - 从 MySQL 获取项目数组
- algorithm - 如何在 ECC 中创建构造函数点?(请帮助)
- angular - 如何使用离子打字稿解决 Firebase 未捕获的错误?