我有2个节点,user_account_settings
和users
。我想编写一个查询,以使两个节点的子节点都相等。我写了一个查询,但它返回空值。如何编写多引用查询。
数据结构:
ViewModel类:
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!!)
}
}
}
})
答案 0 :(得分:1)
如何编写多引用查询?
您无法执行“多参考查询”。您只能从运行查询的位置(包括所有子项)获得结果。在您的特定情况下,您需要使用两个单独的查询,一次是获取用户详细信息,第二次是获取帐户详细信息。
的确可以在根引用上添加一个侦听器并获取整个数据库中的所有子级,但这不是一个选择,因为您需要下载整个数据库的内容,这浪费了带宽和资源。