Как запросить тип данных Firebase Firestore Reference?

Я использую тип ссылочных данных Firestore для хранения ссылки на пользователя, как показано на скриншотах ниже

Ссылка пользователя

введите описание изображения здесь

Коллекции пользователей

введите описание изображения здесь

Когда я пытаюсь запросить эти данные, я получаю ClassCastException (я пытался использовать String только ради него).

Код

 //.. 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)) } 

Трассировки стека

 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) 

К какому классу следует использовать тип ссылочных данных? ( com.google.android.gms.internal.zzegf кажется внутренним классом, который не должен использоваться)

На данный момент я не нашел никакого примера в документах для ссылочного типа. Любая помощь будет оценена по достоинству.

Firestore возвращает DocumentReference при получении ссылки из ваших коллекций. Если смена броска на DocumentReference не работает, отследите эту проблему .

Нам нужно будет увидеть некоторые из вашего кода, чтобы дать вам ответ. но в то же время вот что выглядит мой фрагмент запроса, он предполагает, что вы ищете что-то уникальное, если не можете просмотреть результаты.

 FireBaseFirestore db = FirebaseFirestore.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"); } } } }); 

У меня такая же проблема. Однако я могу решить эту проблему, используя:

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

Я не уверен, что это правильный путь, но этот способ работает для меня.

— Обновить —

Кажется, новая версия firestore (11.6.0) на Android не может использовать мой путь. Однако он может быть запущен напрямую

 DocumentReference docRef = (DocumentReference) map.get("reference_field"); 
Intereting Posts
Kotlin / IntelliJ – компилятор не может найти правильный тип параметра функции Как добавить пользовательские группы просмотра в Anko DSL? Как выполнить код Kotlin в плагине IntelliJ? Есть ли разница между «объектом-получателем» и «приемником расширения», Intellij Idea не будет компилировать kotlin, но maven делает Чистая архитектура приложений для Android: если на уровне данных есть свои классы моделей? Переопределяющая переменная создает NPE, когда переменная используется при инициализации в суперклассе Имеет ли Kotlin функцию «перечисления», такую ​​как Python? Матч скобки kotlin способ Ошибка компилятора функции Unfrapping Kotlin Передача списка объектов в фрагмент Почему unregisterReceiver () никогда не вызывает onServiceDisconnected? try-with-resources: функция «использовать» в Kotlin не всегда работает Cloud Firestore – QuerySnapshot.toObjects выбрасывает ненулевой указатель Обработка Nullable Type в RxJava с Kotlin