¿Cómo consultar el tipo de datos de reference Firebase Firestre?

Estoy usando el tipo de datos de reference Firestre para almacenar una reference a un usuario como se muestra en las capturas de pantalla a continuación

Referencia del usuario

enter image description here

Colecciones de usuarios

enter image description here

Cuando trato de consultar estos datos, obtengo una ClassCastException (intenté convertirla a una String solo por el mero hecho de hacerlo).

Código

 //.. this function reads data from DocumentSnapshot //.. and converts to an Organization private fun DocumentSnapshot.toOrganization(): Organization { //.. some code (this.data["members"] as ArrayList<HashMap<String, Any>>).map { toOrgMember(it) }) //.. more code } fun toOrgMember(map: Map<String, Any>): OrgMember { //map["user"] as String throws ClassCastException. Refer first screenshot return OrgMember(map["id"] as Long, UserRef(map["user"] as String), map["type"] as String, asJobTitlesList(map["jobTitles"] as String)) } 

Stacktrace

 10-14 20:31:17.503 15569-15569/com.ab W/System.err: Caused by: java.lang.ClassCastException: com.google.android.gms.internal.zzegf cannot be cast to java.lang.String 10-14 20:31:17.504 15569-15569/com.ab W/System.err: at feature.model.core.CoreUtilsKt.toOrgMember(CoreUtils.kt:28) 10-14 20:31:17.504 15569-15569/com.ab W/System.err: at feature.model.organization.OrgRemoteKt.toOrganization(OrgRemote.kt:55) 

¿A qué class debería aplicar el tipo de datos de reference? ( com.google.android.gms.internal.zzegf parece una class interna que no debe usarse)

A partir de ahora, no encontré ningún ejemplo en los documentos para un tipo de reference. Cualquier ayuda sería apreciada.

Firestre devuelve una DocumentReference cuando obtiene una reference de sus collections. Si el cambio de conversión a DocumentReference no funciona, realice un seguimiento de este problema .

Tendremos que ver algunos de sus códigos para darle una respuesta. pero mientras tanto, aquí está mi fragment de consulta, supone que estás buscando algo único si no puedes recorrer los resultados.

 FireBaseFirestre db = FirebaseFirestre.getInstance(); collectionRef = db.collection("yourCollection"); Query query = collectionRef.whereEqualTo("Field", "yourQuery" ); query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if(task.isSuccessful()) { QuerySnapshot qSnap = task.getResult(); if (!qSnap.isEmpty()) { Log.d("Query Data", String.valueOf(task.getResult().getDocuments().get(0).getData())); } else { Log.d("Query Data", "Data is not valid"); } } } }); 

Yo sufro tu problema. Sin embargo, puedo resolver este problema usando:

 DocumentReference docRef = firestre.document(map.get("reference_field").toString()); 

No estoy seguro de que esta sea la forma correcta, pero de esta manera me funciona.

– Actualización –

Parece que la nueva versión de Firerestre (11.6.0) en Android no puede usar mi path. Sin embargo, puede ser lanzado directamente

 DocumentReference docRef = (DocumentReference) map.get("reference_field"); 
  • ClassCastException con el método bindService de ServiceTestRule
  • function kotlin devuelve nulo
  • Cómo cambiar el order de comparaciónBy en Kotlin
  • Clase de aplicación Kotlin SingleTon
  • Configuración de Kotlin para Gradle sin asistencia de IDE: las classs de Kotlin no llegan a classpath
  • Kotlin - Función de espera
  • Extraña java.lang.ClassCastException al usar la llamada
  • "No se puede encontrar la class referenceda" con Proguard y Kotlin
  • Clases internas de Kotlin en Java visibles públicamente
  • Método de llamada de la class Kotlin
  • Anotación de Android con Kotlin