我真的没有得到这个,再一次,接近绝望处理火力基地..
我在特定位置保存了一个列表: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
处理程序:
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("删除")。equalTo(false),而不是字符串字段。与其他字符串字段的情况相同。 还有人可以解释为什么在firebase查询的数据是如此荒谬复杂,每个查询需要花费数小时研究才能知道如何完成它?
答案 0 :(得分:0)
只做
rootRef.child("聊天&#34) .orderByChild(" UID&#34)。equalTo(" Jc9dASQdabXiT0holYFDkeqCczK2&#34) .addListenerForSingleValueEvent
此查询适用于" Chats"节点,将通过" uid"来命令它们,并返回具有正确uid值的那个。
我认为之前的查询对您不起作用,因为您使用{{明确指定聊天中的哪个孩子1}},它使用键" WPXEmqvX1BfQB9n3UQFjF3xi1so2"返回给孩子。 (这是一个单独的聊天对象),所以orderByChild(" uid")不再像它应该的那样工作了。
答案 1 :(得分:0)
当您持有特定节点时,您无法更新同一个节点。为什么,因为它仍在使用并保留参考。