【发布时间】:2021-10-04 12:19:17
【问题描述】:
这不是重复的,建议的链接是JAVA,但我正在寻找Kotlin
我想编写一个方法,该方法将returnFirestore 中文档的特定字段的值。我知道如何获取值,但无法返回值。
这就是我所拥有的。
fun getCurrentUserType(): String {
var userType = ""
mFireStore.collection("users")
.document(getCurrentUserID())
.get()
.addOnSuccessListener { document ->
val usrType: String? = document.getString("user_type")
if (usrType != null) {
userType = usrType
}
}
return userType
}
如你所知,这个return语句在从Firestore获取数据之前执行,所以它没有用。
正如我在 Stackoverflow 上看到的,返回方法必须在 addOnCompleteListener 中。我无法在上面的代码中调用addOnCompleteListener,我尝试按如下方式进行操作,但这不起作用。可以帮忙吗?
虽然使用以下代码,但我在 Logcat 中得到了正确的值。
以下是如何尝试的。
fun getCurrentUserType(): String {
mFireStore.collection("users").get().addOnCompleteListener { task ->
if (task.isSuccessful) {
val list = ArrayList<String>()
for (document in task.result) {
val userType = document.data["user_type"].toString()
list.add(userType)
}
Log.d("UserType is ", list[0])
val userTye = list[0]
return@addOnCompleteListener userTye
}
}
}
【问题讨论】:
-
我可以知道是什么问题吗?
标签: android kotlin google-cloud-firestore