Kotlin使用协程从Firestore获取数据

问题描述

我从Firestore获取数据时非常失落,网上有100万个解决方案(使用协程,Flow,try&catch,onCallback,runBlocking,.await(),改造,viewmodel,RecycleView等)。 ),但最后却没有一种简单的方法...

从我这边来说,我只想从至少2个Firestore文档中下载和存储信息,然后再进行其他活动。当我必须从一个文档中获取数据时,它工作正常(我将startActivity放在docref.get()。addOnCompleteListener / if(task.isSuccessful)/ docRef.get()。addOnSuccessListener循环中)但是我必须下载来自多个docref的数据,我尝试在主循环中使用外部函数,然后遇到异步问题。

经过多次尝试后,我正在测试Alex在底部描述的here。因此,我在协程中启动了“ get_data”:

GlobalScope.coroutinesLaunch {getDataFromFirestore() }

我写了相关的函数

private suspend fun getDataFromFirestore() {
    try {
        val myval1: MyClass1 = getDataFromDoc1()
        (this.application as MyApp).mydata1 = myval1
        val myval2: MyClass2 = getDataFromDoc2()
        (this.application as MyApp).mydata2 = myval2
    }
    catch (e: Exception) {
        Toast.makeText(this,"Fail",Toast.LENGTH_LONG).show()
    }
}

和文档1中的mydata1(与其他文档中的其他数据相同)

private suspend fun getData1(): MyClass1 {

    val db = FirebaseFirestore.getInstance()
    val docRef = db.collection("collection_key").document("document1_key")
    val documentSnapshot = docRef.get().await()
    return documentSnapshot.toObject()!!
}

问题是我的数据“ myval1”的值在“ try”之后是正确的,但“消失了”:我无法成功将其捕获到“ global”变量中(this.application为MyApp) .mydata1

有什么主意吗?

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)