Я получаю данные из 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
}
Для моих тестовых данных у меня есть только 10 документов в коллекции Firestore, но массив в конечном итоге содержит 100 объектов при первом чтении.
Это должно быть 10, и каждый раз при записи добавляются только новые данныепроисходит в этой коллекции Firestore.