【发布时间】:2021-02-26 05:10:14
【问题描述】:
是否可以一次查询和更新同一个节点? Am 编写查询以查找节点,如果节点可用,则在同一查询中尝试删除相同的节点,而在此过程中节点正在删除,但再次使用先前的值创建相同的节点。
val query: Query = firebaseDatabase.reference.child("members").orderByChild("resetKey")
.equalTo(uniqueKey)
query.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists()) {
Log.d("snapshot", snapshot.value.toString())
for (childSnap in snapshot.children) {
val key= childSnap.child("resetKey").value.toString()
if (key.isNotEmpty() && key == uniqueKey) {
firebaseDatabase.reference.child("members")
.child(childSnap.key!!)
.child("resetKey").removeValue()
}
}
}
}
override fun onCancelled(error: DatabaseError) {
Log.d("error", error.message.toString())
}
})
【问题讨论】:
-
为什么说“创建与前一个值相同的节点”?我在您的代码中看不到任何
setValue()方法调用。 -
删除密钥时,会在 db 中再次创建密钥。这是面临的问题。
-
代码中是否有对
setValue()的调用?如果是,请将其添加到您的问题中。