¿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"); 
  • Función de Kotlin con input anulable / no nula mapeada a salida nula / nula
  • Java modifica el contenido de la class kotlin a nulo
  • Llamar a kotlin funciones que son palabras key en java de java?
  • Recycler View no se desplaza suavemente
  • Kotlin llama al método java con el argumento Clase <T>
  • Implementar solo un método desde la interfaz en class anónima
  • kotlin android start nuevo service
  • AsyncTask sin fugas
  • Gravedad compleja en Anko
  • Orden de datos de spring por function de Java
  • ¿Cómo organizar files de resources de layout en Android Studio?