android - 我正在使用 Kotlin 开发一个 Android 应用程序,我正在尝试从 Firestore 获取文档引用

标签 android firebase kotlin google-cloud-platform google-cloud-firestore

我正在使用 Kotlin 和 Firebase 开发一个 Android native 应用程序,我有一个名为 Topic 的集合和 2 个类型引用的字段,一个用于用户,另一个用于类别,我试图通过引用文档获取所有文档,但是它似乎不起作用:

db.collection("topic").get().addOnSuccessListener { result ->
        for (document in result) {
            Log.e("success", "${document.id} => ${document.data.get("subject")}")
            var topic: Topic = Topic(
                document.id as String,
                document.data.get("subject") as String,
                document.data.get("content") as String,
                document.data.get("created_at") as String,
                document.getDocumentReference("Category") as Category,
                document.getDocumentReference("User") as User
            )}

没有错误,但我的 print(topic) 中也没有结果。

这是主题类

class Topic : Serializable {
    var id : String = ""
    var subject : String = ""
    var content : String = ""
    var created_at : String = ""
    var cat = Category()
    var user = User()

    constructor(){}

    constructor(
        id: String,
        subject: String,
        content: String,
        created_at: String,
        cat: Category,
        user: User
    ) {
        this.id = id
        this.subject = subject
        this.content = content
        this.created_at = created_at
        this.cat = cat
        this.user = user
    }

    override fun toString(): String {
        return "Topic(id='$id', subject='$subject', content='$content', created_at='$created_at', cat=$cat, user=$user)"
    }
}

Database

最佳答案

您必须通过单独的 get() 调用显式获取每个引用的文档。无法在当前通话中自动获取它们。

所以类似:

db.collection("topic").get().addOnSuccessListener { result ->
    for (document in result) {
        document.getDocumentReference("Category").get().addOnSuccessListener { categoryDoc ->
            let category = categoryDoc.data as Category
            ...
        }
    }
}

另请参阅:

关于android - 我正在使用 Kotlin 开发一个 Android 应用程序,我正在尝试从 Firestore 获取文档引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58641061/

相关文章:

java - Android SharedPreferences onSharedPreferenceChanged 未触发

android - Firebase 电话身份验证和电话号码选择器

Kotlin - "in"关键字 - 用于什么?

javascript - 除了react-native-background-task之外,还有什么方法可以在React Native中执行后台任务吗?

android - 水平对齐时微调器向下 float

java - Firebase 短信邀请

kotlin - Kotlin 中的 emptyArray() 有什么用

java - Spring Boot Embedded Kafka无法连接

java - 如何调整这些显示在网格布局上的图像?

android - 如何使用 RelativeLayout 以编程方式设置 textview 的重力?