Android 如何在Firebase中查询多个节点/引用
我有两个节点,用户\帐户\设置和用户。我想写一个查询来获取两个节点的子节点,其中两个节点的用户名相等。我编写了一个查询,但它返回null。如何编写多引用查询 数据结构: ViewModel类:Android 如何在Firebase中查询多个节点/引用,android,firebase,kotlin,firebase-realtime-database,Android,Firebase,Kotlin,Firebase Realtime Database,我有两个节点,用户\帐户\设置和用户。我想写一个查询来获取两个节点的子节点,其中两个节点的用户名相等。我编写了一个查询,但它返回null。如何编写多引用查询 数据结构: ViewModel类: private val databaseRef = FirebaseDatabase.getInstance().reference .orderByChild("username") .equalTo("faisal.askani") private val l
private val databaseRef = FirebaseDatabase.getInstance().reference
.orderByChild("username")
.equalTo("faisal.askani")
private val liveData = FirebaseQueryLiveData(databaseRef)
ProfileFramgnet:
viewModel.getDataSnapshotLiveData().observe(viewLifecycleOwner, Observer { dataSnapshot ->
if(dataSnapshot != null)
{
for (ds: DataSnapshot in dataSnapshot.children)
{
//user node
if (ds.key.equals("users"))
{
val user = ds.getValue(User::class.java)
viewModel.setUserInfo(user!!)
}
if(ds.key.equals("user_account_settings"))
{
val userAccountInfo = ds.getValue(UserAccountSettings::class.java)
viewModel.setUserAccountInfo(userAccountInfo!!)
}
}
}
})
如何编写多引用查询
您无法执行多引用查询。您只能从运行查询所针对的位置(包括所有子项)获取结果。在您的特定情况下,您需要使用两个单独的查询,一个用于获取用户详细信息,另一个用于获取帐户详细信息
确实,您可以在根引用上添加一个侦听器,并获取整个数据库中的所有子项,但这不是一个选项,因为您需要下载整个数据库的内容,这是对带宽和资源的浪费