gpt4 book ai didi

ios - Firestore 监听器正在获取比现有文档数量更多的数据

转载 作者:行者123 更新时间:2023-11-28 13:46:47 25 4
gpt4 key购买 nike

我正在从 Firestore 获取数据并设置监听器。数据存储在稍后用于 API 调用的数组中。我只想将新数据附加到这个数组。我已经为文档的“添加”更改设置了一个监听器。

这是我到目前为止实现的:

        db.collection("name").whereField("id", isEqualTo: id).addSnapshotListener({ (querySnapshot, error) in
guard let snapshot = querySnapshot else { return }

snapshot.documentChanges.forEach({ (change) in
if change.type == .added {
do {
for document in snapshot.documents {
// decode method code is shown below
let object = try document.decode(as: Object.self)
self.objectArray.append(object)
}
} catch {
print(error)
}
}
})
})

解码方法

func decode<T: Decodable>(as objectType: T.Type, includingId: Bool = true) throws -> T {

var documentJson = data()
if includingId {
documentJson?["id"] = documentID
}

let documentData = try JSONSerialization.data(withJSONObject: documentJson, options: [])
let decodedObject = try JSONDecoder().decode(objectType, from: documentData)

return decodedObject
}

对于我的测试数据,我在 Firestore 集合中只有 10 个文档,但在第一次读取时数组最终有 100 个对象。

它应该是 10,每次对该 Firestore 集合进行写入时,只会附加新数据。

最佳答案

您正在同一个循环中遍历 snapshot.documentChangessnapshot.documents。我不确定你想用这些嵌套循环来完成什么,但这对我来说没有任何意义。如果您想知道查询返回了多少文档,只需查看 snapshot.documents,因为它将包含整个集合。

关于ios - Firestore 监听器正在获取比现有文档数量更多的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55310489/

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