Поиск по базе данных Firebase не дал результатов - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь выполнить поиск пользователя в моей базе данных, которая использует Firebase в качестве бэкэнда. Я пытаюсь выполнить поиск пользователя в моей базе данных, который использует Firebase в качестве бэкэнда. Через поисковый запрос я хочу выполнить поиск, чтобы отобразить результаты в обзоре переработчика. Однако при выполнении поиска мой код не приносит никаких результатов.

Мой код:

private fun configurarSearchView(view: View) {
        view.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
            override fun onQueryTextSubmit(query: String): Boolean {
                return false
            }

            override fun onQueryTextChange(newText: String): Boolean {
                if (newText.isNotEmpty()) {
                    recyclerViewBeta.visibility = View.GONE
                    recyclerPesquisa.visibility = View.VISIBLE
                    pesquisarUsuarios(newText.toUpperCase())
                    Log.i("PESQUISA", newText.toUpperCase())
                } else {
                    recyclerViewBeta.visibility = View.VISIBLE
                    recyclerPesquisa.visibility = View.GONE
                }
                return true
            }
        })
    }

    private fun pesquisarUsuarios(texto: String) {
        Log.i("PESQUISA", "P: $texto")
        val query: Query = FirebaseDatabase.getInstance().getReference().child("users").orderByChild("nomePesquisa")
                .startAt(texto.toUpperCase()).endAt(texto.toUpperCase() + "\uf8ff")
        query.addListenerForSingleValueEvent(object : ValueEventListener {
            override fun onDataChange(dataSnapshot: DataSnapshot) {
                for (ds in dataSnapshot.children) { 
                    val usuario = ds.getValue(Usuario::class.java)!!
                    listaPesquisa.add(usuario)
                    Log.i("PESQUISA", "R: ${usuario.nomeExibicao}")
                }
                recyclerPesquisa.adapter?.let { it.notifyDataSetChanged() }
                val total: Int = listaPesquisa.size
                Log.i("PESQUISA", "total$total")
            }

            override fun onCancelled(databaseError: DatabaseError) {}
        })

База данных:

"usuarios" : {
    "5P6DzPIEuiSKU5UYGo03AwSMTED3" : {
      "email" : "valter@teste.com",
      "id" : "5P6DzPIEuiSKU5UYGo03AwSMTED3",
      "nickExibicao" : "valter",
      "nomeExibicao" : "Valter dos Santos",
      "nomePesquisa" : "VALTER DOS SANTOS",
      "status" : "1577010585880",
    },

Почему данные не отображаются? Как это исправить? Заранее спасибо!

1 Ответ

2 голосов
/ 08 января 2020

Вы указываете неверный дочерний элемент пользователей для ссылки на базу данных, которая должна составлять обычно ios в соответствии с вашей структурой базы данных. Попробуйте использовать

FirebaseDatabase.getInstance().getReference()
        .child("usuarios")
        .orderByChild("nomePesquisa")
        .startAt(texto.toUpperCase())
        .endAt(texto.toUpperCase() + "\uf8ff")
        .addListenerForSingleValueEvent();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...