Android – Iniciar la consulta de base de datos de Firebase no funciona como se esperaba

Estoy desarrollando una aplicación para Android que utiliza Firebase como backend. Soy nuevo en Firebase y atascado en un problema, bien el problema es cuando intento buscar un expediente usando la consulta del startAt , devuelve los resultados que no comienza con la palabra clave que entre.

Aquí está el conjunto de datos

 itemname -KK8vI8A5BZZp3Xo3FpA name: "abc" -KK8w3uoJdJ0hBSrq0CS name: "test" -KKAC1o9Vazyg9JLtDoQ name: "dude" 

Y aquí está el código snippit

 Query query = firebase.child(Constants.KEY_ITEM_NAME).orderByChild("name").startAt("abc"); query.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Iterator<DataSnapshot> i = dataSnapshot.getChildren().iterator(); while (i.hasNext()) { DataSnapshot d = i.next(); LOG(d.getKey(), d.getValue().toString()); } } 

Así que cuando busco abc la respuesta también incluye la test . Tal vez estoy haciendo algo mal o me voy por el camino equivocado. ¿Podría alguien por favor me señalan en la dirección correcta.

PS Estoy intentando utilizar un AutocompleteTextView para buscar elementos.

Gracias

Cuando llama a orderByChild("name").startAt("abc") la base de datos ordena todos los elementos por su propiedad de nombre, omite los anteriores a abc y luego los devuelve todos.

Si sólo buscas regresar a los niños que coincidan con abc , utilizarías equalTo() :

 query = firebase.child(Constants.KEY_ITEM_NAME).orderByChild("name").equalTo("abc"); 

Desafortunadamente no puedes hacer lo que quieres. Supongo que el método que está buscando es startsWith() y no startAt() (para coincidir con todas las palabras que comienzan con una subcadena). Este método no se ha implementado todavía en Firebase, demasiado mal.

Usted tiene que utilizar un servicio externo como ElasticSearch, pero eso significaría que debe tener un servidor que es probablemente uno de los motivos que realmente utilizan firebase … De todos modos este es un enlace para la implementación de ElasticSearch:

https://firebase.googleblog.com/2014/01/queries-part-2-advanced-searches-with.html

De lo contrario tendrá que averiguar cómo deshacerse de su barra de búsqueda …

¡Buena suerte!

Trabajó para mí:

  Query query = MyApplication.sReferenceOrders.orderByChild(Constants.STATUS).startAt("1").endAt("1\\uf8ff"); 
  • URL de Firebase de Google Cloud Function Node.js
  • Com.google.firebase.database.DatabaseException: No se admite la serialización de matrices, utilice Listas en su lugar
  • Firebase android jars documentation / javadoc en Android Studio
  • Firebase - Transmisión de información de la actividad con persistencia activada
  • Android: la aplicación de indexación de aplicaciones de Firebase no se muestra en las sugerencias de autocompletar de google
  • Firebase configuración de configuración remota por userId
  • Uso de Android / Firebase Invite System
  • UserProfileChangeRequest setPhotoUri - ¿Cómo se hace?
  • Firebase Deep-link abrir juego de la tienda incluso cuando la aplicación está instalada
  • Java.util.zip.ZipException: entrada duplicada con firebase
  • Android Uso de Firebase Analytics junto con Google Analytics
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.