Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在Firebase中查询多个节点/引用_Android_Firebase_Kotlin_Firebase Realtime Database - Fatal编程技术网

Android 如何在Firebase中查询多个节点/引用

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

我有两个节点,用户\帐户\设置和用户。我想写一个查询来获取两个节点的子节点,其中两个节点的用户名相等。我编写了一个查询,但它返回null。如何编写多引用查询

数据结构:

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!!)
                    }
                }
            }
        })
如何编写多引用查询

您无法执行多引用查询。您只能从运行查询所针对的位置(包括所有子项)获取结果。在您的特定情况下,您需要使用两个单独的查询,一个用于获取用户详细信息,另一个用于获取帐户详细信息

确实,您可以在根引用上添加一个侦听器,并获取整个数据库中的所有子项,但这不是一个选项,因为您需要下载整个数据库的内容,这是对带宽和资源的浪费