我正在使用 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)"
}
}
最佳答案
您必须通过单独的 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/