【发布时间】:2018-06-06 09:18:02
【问题描述】:
我真的不明白,再一次,我接近绝望地处理火力基地..
我在特定位置保存了一个列表: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("deleted").equalTo(false),但不适用于字符串字段。其他字符串字段的情况相同。 也有人可以解释一下为什么在 firebase 上进行的数据查询如此复杂,而且每个查询都需要数小时的研究才能弄清楚它是如何完成的?
【问题讨论】:
-
您在问题中包含了 JSON 树的图片。请将其替换为作为文本的实际 JSON,您可以通过单击 Firebase 数据库控制台中的导出 JSON 链接轻松获取该文本。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事。
-
在进一步使用该软件并进行测试时,甚至似乎这种代码,在其他地方也以类似的方式使用,有时可以工作,返回单个值,有时不能。真的很奇怪..
-
您能否显示您的处理程序的内容,以便我们检查如何您正在处理查询结果?即使您只是记录数据,也没关系;只要确保它重现了问题。
-
没有什么可复制的,我实现了一个 ValueEventListener 对象,并在对它进行任何操作之前直接查看我在 onDataChange 收到的 DataSnapshot
-
请与我们分享您的处理程序的内容。
标签: android firebase firebase-realtime-database