La consulta de bases de datos en time real de Firebase no funciona

Estoy usando la database en time real de Firebase en mi proyecto de Android. Mi esquema de database como a continuación:

esquema de base

Quiero get los mejores 10 puntajes. Mi consulta:

val query = reference.child("users").orderByChild("score").limitToFirst(10) query.addValueEventListener(object : ValueEventListener { override fun onCancelled(p0: DatabaseError) {} override fun onDataChange(dataSnapshot: DataSnapshot) { dataSnapshot.children.forEach { val score: String = it.child(Constants.scoreKey).value as String Log.i(TAG,"score:"+score) } } }) 

Espero ver los mejores 10 puntajes en logcat. Pero no fue así. Veo puntuaciones aleatorias. ¿Cuál es mi error?

Para resolver esto, cambie el tipo de campo de score de String a int o long , de lo contrario, el order se realiza lexicographically .

No hay ningún operador en Firebase y, por lo que sé, ni en otras bases de datos que te permitan cambiar este comportamiento. En cambio, deberá modificar los datos para get el comportamiento que desea. Si desea ir con el valor de Cadena, almacene los valores que están en el order que los necesita cuando se orderan lexicográficamente. Para los numbers puedes lograr eso rellenando con ceros:

Como ejemplo:

  • "0131" // cero agregado antes
  • "0132" // cero agregado antes
  • ……
  • "1308"
  • "1309"
  • "1310"
  • "1311"
  • Jackson Custom Serializer delegando a Jackson para serializar
  • ¿Es posible vincular a un miembro de la class en kodein?
  • ¿Por qué no puedo poner el {de una class anónima en una nueva línea en Kotlin?
  • Cómo proporcionar datos de testing y classs en proyectos de gradle de varios modules
  • ¿Cómo crear una list inmutable en Kotlin que también sea una list inmutable en Java?
  • Kotlin - Convierta mientras que el loop al estilo funcional
  • ¿Puede una interfaz de kotlin almacenar en caching un valor?
  • ¿Puede la class de datos Kotlin tener más de un constructor?
  • error al usar 'npm start' con la aplicación creada por 'create-react-kotlin-app'
  • Android Retrofit + SimpleXmlConverter con entidad vacía
  • ¿Cómo ejecutar código Kotlin en un plugin IntelliJ?