【问题标题】:Return Null after convert toObjects in Firestore在 Firestore 中转换为对象后返回 Null
【发布时间】:2020-10-14 16:18:20
【问题描述】:

我有如下数据类

data class Course (
    val title: String?=null,
    val image: String?=null,
    val guid: String?=null,
    val price: String?=null,
    val category: String?=null,
    val instructorName: String?=null,
    val instructorCode: String?=null,
    val rating: String?=null
)

当我推送数据一切正常时,我的数据在 Firestore 中是这样的(对不起,我有 2 种数据,因为尝试和错误)

但我的问题是当我在视图模型中使用此执行时

val progressOne = async {
                firestore.collection("courses_popular")
                    .get()
                    .addOnCompleteListener {task ->

                        if(task.isSuccessful){
                            val doc = task.result
                            if(doc != null){
                                val res = doc.toObjects(Course::class.java)
                                popularData.postValue(Response(res, ResponseStatus.SUCCESS))
                            }else{
                                popularData.postValue(Response(responseStatus = ResponseStatus.ERROR, msg = "Document null"))
                            }
                        }
                        else{
                            popularData.postValue(Response(responseStatus = ResponseStatus.ERROR, msg = "${task.exception?.message}"))
                        }
                    }
            }

为什么我总是得到instructorName 和instructorCode 为空,但是值是存在的? (这是我打印控制台时得到的)

MateriPopulerAdapter: Course(title=Belajar Matematika tingkat SMP, 图片=https://storage.googleapis.com/skill-baru.appspot.com/courses_popular/-MI7nXMm1EsCqQX2Shfr/ilustrasi-matematika.jpg, guid=1,价格=500000,类别=MTK,instructorName=null, coachCode=null, rating=4)

  1. 尝试 将所有骆驼的情况改为正常情况。

    数据类课程( val 标题:字符串?=null, val图像:字符串?=空, val guid: String?=null, val价格:字符串?=空, val 类别:String?=null, val 讲师姓名:字符串?=null, val 讲师代码:字符串?=空, val 评级:字符串?= null )

错误控制台

D/MateriPopulerAdapter: Course(title=Belajar Matematika tingkat SMP, image=https://storage.googleapis.com/skill-baru.appspot.com/courses_popular/-MI7nXMm1EsCqQX2Shfr/ilustrasi-matematika.jpg, guid=1, price=500000, category=MTK, instructorname=null, instructorcode=null, rating=4)
10-15 15:20:58.984 13736-13736/com.skillbaru.apps W/TabLayout: MODE_SCROLLABLE + GRAVITY_FILL is not supported, GRAVITY_START will be used instead
10-15 15:20:59.005 13736-13736/com.skillbaru.apps D/AndroidRuntime: Shutting down VM

【问题讨论】:

  • 我发现了一个旧的issue,其中使用camelCase影响了字段的检索,是否可以尝试删除整个文档并仅使用小写字母,看看它是如何工作的?跨度>
  • @Emmanuel 你的意思是,我必须将 var 更改为 instructornameinstructorcode
  • 是的,但也尝试删除字段名称为驼峰式的文档
  • 仍然无法正常工作,我已经全部更改并删除了驼峰式大小写,仍然返回 null @Emmanuel
  • 等一下,在我清理我的应用程序并从零开始之后,它已经存在了。多么奇怪

标签: java android firebase google-cloud-firestore


【解决方案1】:

我解决了这个问题,我所做的是将所有参数(在 firestore 和 POJO 中)变为小写(没有驼峰式)。并删除所有驼峰式并尝试卸载应用程序以确保本地设备中没有缓存参数。所以现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多