Структура базы данных futsal_list.document(futsal_uid).collection("book_info").document(date in format "May 9, 2019".collection("newrequest").document(userUid)
и в useruid есть карта типа
time[
6AM : timestamp
7AM : timstamp,
]
Я пользуюсь облачным пожарным магазином Google и хочу получить новый запрос со всех дат иэто должен быть слушатель в реальном времени.Я также хочу разделить раздел представления таблицы в соответствии с датой.И я показываю только сегодняшние и предстоящие даты, а не прошлые.
проблема - при получении нового запроса таблица добавляет в таблицу один и тот же запрос несколько раз, и когда я возвращаюсьи прийти к представлению, то данные показаны в порядке.
это то, что я пытался
func loadAllRequestFromFirebasee() {
db.collection("futsal_list").document(currentUser!.uid).collection("book_info").addSnapshotListener { (querySnapshot, error) in
guard let snapshot = querySnapshot else {
print("Error fetching snapshots: \(error!)")
return
}
self.newRequestArray.removeAll()
self.sectionHeader.removeAll()
var validDates = [String] ()
for document in snapshot.documents {
let bookedDate = document.documentID
if !self.isPastDate(date: bookedDate) {
validDates.append(bookedDate)
}
}
for (bookedDateIndex, bookedDate) in validDates.enumerated() {
self.db.collection("futsal_list").document(self.currentUser!.uid).collection("book_info").document(bookedDate).collection("newrequest").getDocuments(completion: { (uidSnapshots, error) in
guard let uidSnapshot = uidSnapshots else {
print("Error fetching snapshots: \(error!)")
return
}
let userUids = uidSnapshot.documents
if userUids.count > 0 {
self.newRequestArray.append([])
self.sectionHeader.append(bookedDate)
for document in userUids {
print("\(document.documentID) => \(document.data())")
let dataDescription = document.data()
let userUid = document.documentID
let bookedTimes = dataDescription["time"] as! [String : Any]
self.db.collection("users_list").document(userUid).getDocument(completion: { (document, error) in
if let document = document, document.exists {
let data = document.data()
let userName = data!["user_full_name"] as? String ?? ""
// let futsalAddress = data!["futsal_address"] as? String ?? ""
let userPhone = data!["user_phone_number"] as? String ?? ""
let userProfilePic = data!["user_profile_image"] as? String ?? ""
for time in bookedTimes.keys {
let newRequest = NewRequest(userUid: userUid, userName: userName, bookDate: bookedDate, bookTime: time, userPhoneNumber: userPhone, userProfilePicture: userProfilePic)
self.newRequestArray[bookedDateIndex].append(newRequest)
self.newBookRequestTableView.reloadData()
}
}
})
}
}
})
}
}
}