Firebase 是否可以从函数返回Firestore数据?
在中,从Firestore检索数据:Firebase 是否可以从函数返回Firestore数据?,firebase,kotlin,google-cloud-firestore,Firebase,Kotlin,Google Cloud Firestore,在中,从Firestore检索数据: val docRef = db.collection("cities").document("BJ") docRef.get().addOnSuccessListener { documentSnapshot -> val city = documentSnapshot.toObject<City>() } val docRef=db.集合(“城市”)文档(“BJ”) docRef.get().addOnSuccessListen
val docRef = db.collection("cities").document("BJ")
docRef.get().addOnSuccessListener { documentSnapshot ->
val city = documentSnapshot.toObject<City>()
}
val docRef=db.集合(“城市”)文档(“BJ”)
docRef.get().addOnSuccessListener{documentSnapshot->
val city=documentSnapshot.toObject()
}
我怎样才能把它转换成一个函数,返回一个城市对象?大概是这样的:
fun getCity(): City?{
val docRef = db.collection("cities").document("BJ")
docRef.get().addOnSuccessListener { documentSnapshot ->
val city = documentSnapshot.toObject<City>()
return city
}
fun getCity():城市{
val docRef=数据库集合(“城市”)文档(“BJ”)
docRef.get().addOnSuccessListener{documentSnapshot->
val city=documentSnapshot.toObject()
返回城市
}
调用getCity()函数时,我是否可以“等待”结果?您需要知道一件重要的事情: 所有Firestore API都是异步的。它们会立即返回,您必须使用回调来获取结果。无法保证何时调用回调,必须异步处理回调。您的
getCity()
函数将无法立即返回对象
get()
返回一个表示异步查询的任务对象(由提供)。如果要wait()
结果,最简单的方法是使用库将该任务转换为可以等待的suspend fun
。如果这样做,您的getCity()
还应该是一个suspend fun
,这样它就可以将结果异步地传递给调用方
另请参见:您需要知道一件重要的事情: 所有Firestore API都是异步的。它们会立即返回,您必须使用回调来获取结果。无法保证何时调用回调,必须异步处理回调。您的
getCity()
函数将无法立即返回对象
get()
返回一个表示异步查询的任务对象(由提供)。如果要wait()
结果,最简单的方法是使用库将该任务转换为可以等待的suspend fun
。如果这样做,您的getCity()
还应该是一个suspend fun
,这样它就可以将结果异步地传递给调用方
另见: