如何从Firestore检索数据并将其存储在全局变量中

时间:2020-08-25 21:04:02

标签: kotlin google-cloud-firestore

我似乎无法弄清楚如何将从Firestore检索的数据存储在自定义对象类型的全局变量中。我可以从.addOnSuccessListener中打印出数据,但不能将数据分配给全局变量。

我的代码如下:

 override fun getData(documentPath: String): ShopModel {
        var shopModel = ShopModel()
        firestore.firestoreSettings = FirebaseFirestoreSettings.Builder().build()
        val document = firestore.collection("shops").document(documentPath)
        document.get().addOnSuccessListener {
            shopModel = it.toObject(ShopModel::class.java)!!
            info(shopModel) //this prints the model out and it works
        }
        return shopModel //this returns an object with empty fields
    }

1 个答案:

答案 0 :(得分:0)

您必须在回调(addOnSuccessListener中分配全局变量的值,您无法在函数内部返回该值,因为get()是异步工作的,因此当您到达{{1} }变量return里面没有任何内容,直到执行回调为止,届时该函数已经已返回且带有空变量。

herehere之前已经对此进行了解释