我真的不明白这一点,再一次,我对处理火力基地接近绝望。
我有一个列表保存在特定位置:root/Chats/WPXEmqvX1BfQB9n3UQFjF3xi1so2
"Chats" : {
"Jc9dASQdabXiT0holYFDkeqCczK2" : {
"-L18x_ytEW0vEh5PpMWt" : {
"deleted" : false,
"lastMessage" : "Yes, we can meet on thursday",
"nick" : "Hugo",
"uid" : "WPXEmqvX1BfQB9n3UQFjF3xi1so2",
"userType" : 0
}
},
"WPXEmqvX1BfQB9n3UQFjF3xi1so2" : {
"-L18x_ys4_VF-zSDDk8J" : {
"deleted" : false,
"lastMessage" : "Yes, we can meet on thursday",
"nick" : "SABINE",
"uid" : "Jc9dASQdabXiT0holYFDkeqCczK2",
"userType" : 1
},
"-L18x_z5trZFItxd08XI" : {
"deleted" : false,
"lastMessage" : "I´m fine, thanks, how are you?",
"nick" : "Melanie",
"uid" : "qTmcljT8YAYf2TpnxX1LCopdXde2",
"userType" : 1
}
},
"qTmcljT8YAYf2TpnxX1LCopdXde2" : {
"-L18x_z5trZFItxd08XJ" : {
"deleted" : false,
"lastMessage" : "I´m fine, thanks, how are you?",
"nick" : "Hugo",
"uid" : "WPXEmqvX1BfQB9n3UQFjF3xi1so2",
"userType" : 0
}
}
}
我想检查列表中是否包含具有特定 uid 的条目
rootRef.child("Chats").child("WPXEmqvX1BfQB9n3UQFjF3xi1so2")
.orderByChild("uid").equalTo("Jc9dASQdabXiT0holYFDkeqCczK2")
.addListenerForSingleValueEvent
Handler:
rootRef.child("Chats").child("WPXEmqvX1BfQB9n3UQFjF3xi1so2")
.orderByChild("uid").equalTo("Jc9dASQdabXiT0holYFDkeqCczK2")
.addListenerForSingleValueEvent(object : ValueEventListenerAdapter(){
override fun onDataChange(data: DataSnapshot?) {
}
})
open class ValueEventListenerAdapter : ValueEventListener {
override fun onDataChange(data: DataSnapshot?) {}
override fun onCancelled(error: DatabaseError?) {
throw DbFailureException(if (error != null) error.message else "Unknown reason")
}
}
我在 onDataChange 方法中收到的 DataSnapShot 对象是空的,没有找到任何内容。为什么?它适用于布尔字段,例如 .orderByChild("deleted").equalTo(false),但不适用于字符串字段。其他字符串字段的情况相同。
有人可以解释一下为什么 firebase 的数据查询如此复杂,并且每个查询都需要花费数小时的研究才能弄清楚它是如何完成的吗?