Как отобразить документ Ссылка на POJO в пожарной базе пожарного депо за kotlin - PullRequest
0 голосов
/ 06 апреля 2020

enter image description here В этом содержании есть ссылка на Biomarkers / PR

     data class CancerBiomarker (
        val type : String?= null,
        val biomarkers : List<Biomarkers> = emptyList()
    )


    data class Biomarkers(
    val title: String? = null,
    val content: Biomarker? = null
)

data class Biomarker (
    val content:String? = null
)

Это мой класс данных. В этом контент объявлен как Reference. После выполнения этого я получаю следующее исключение, и если я изменяю контент на DocumentReference, то также я получаю исключение

  java.lang.RuntimeException: Could not deserialize object. Can't convert object of type com.google.firebase.firestore.DocumentReference to type com.firestorepoc.model.Biomarker

Как сопоставить ссылку на модель POJO?

 val firebaseFirestore: FirebaseFirestore = FirebaseFirestore.getInstance()
        firebaseFirestore.collection("CancerBiomarker")
            .get()
            .addOnCompleteListener(OnCompleteListener<QuerySnapshot> { task ->
                if (task.isSuccessful) {
                    val result : MutableList<CancerBiomarker>? = task.result?.toObjects(CancerBiomarker::class.java)

                } else {
                    Log.w("Document", "Document " + "Error getting documents.", task.exception)
                }
            })

1 Ответ

1 голос
/ 06 апреля 2020

Вы получаете следующую ошибку:

java .lang.RuntimeException: Невозможно десериализовать объект. Не удалось преобразовать объект типа com.google.firebase.firestore.DocumentReference в тип com.firestorepo c .model.Biomarker

, поскольку вы объявили свойство content в своем Biomarkers класс должен иметь тип Biomarker, тогда как в базе данных на самом деле DocumentReference. Таким образом, исключение возникает из-за того, что в Kotlin нет способа, которым вы можете привести объект типа DocumentReferenc к объекту типа Biomarker.

Чтобы решить эту проблему, вы должны изменить Свойство content будет иметь тип DocumentReference, как в вашей базе данных.

Кроме того, я вижу, что свойство biomarkers является массивом. Если вам нужно сопоставить этот массив со списком Biomarkers объектов (List<Biomarkers>), ознакомьтесь со следующей статьей:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...