我有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!!)
}
}
}
})
如何编写多参考查询?
您无法执行“多参考查询”。您只能从运行查询的位置(包括所有子项)获得结果。在您的特定情况下,您需要使用两个单独的查询,一次是获取用户详细信息,第二次是获取帐户详细信息。
确实可以在根引用上添加一个侦听器,并在整个数据库中获取所有子级,但这不是一个选择,因为您需要下载整个数据库的内容,这浪费了带宽和资源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句