gpt4 book ai didi

swift - 收听添加到 firestore 集合中的任何新文档

转载 作者:行者123 更新时间:2023-11-30 10:34:28 25 4
gpt4 key购买 nike

现有的解决方案不适合我,我已经尝试过。我想做的是在存储在 Firestore 上的线程中获取消息。这是聊天集合的当前结构:

enter image description here

正如您所看到的,用户 1 和用户 2 之间的聊天只有 2 条消息,我正在尝试获取这些消息,并监听新消息(如果它们添加到线程中)。这是我的操作代码:

func loadChat() {

self.showWaitOverlayWithText("Loading")
let db = Firestore.firestore().collection("Chats")
.whereField("user1ID", isEqualTo: Auth.auth().currentUser?.uid ?? "Not Found User 1")
.whereField("user2UID", isEqualTo: user2UID ?? "Not Found User 2")

db.getDocuments { (querySnap, error) in
if let error = error {
print("Error: \(error)")
return
} else {
let doc = querySnap?.documents.first

doc?.reference.collection("thread").addSnapshotListener(includeMetadataChanges: true, listener: { (threadQuery, error) in
//Never comes here
for message in threadQuery!.documents {
self.removeAllOverlays()
print("Data: \(message.data())")
}
})
}
}
}

它从不执行collection("thread").addSnapshotListner

最佳答案

因此,问题只是查询中的键不正确,“user2UID”而不是“user2ID”。我们能够通过检查可选值(docquerySnap)是否为零来查明此问题。 doc 等于 nil,querySnap 不等于 nil,但其文档计数等于零。这帮助我们知道问题出在线路上

let db = Firestore.firestore().collection("Chats")
.whereField("user1ID", isEqualTo: Auth.auth().currentUser?.uid ?? "Not Found User 1")
.whereField("user2UID", isEqualTo: user2UID ?? "Not Found User 2")

我最初认为问题是后端的值不一致,而不是键。 Chaundhry 再次检查后确认 key 不正确。

关于swift - 收听添加到 firestore 集合中的任何新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58378743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com