Swift 从firebase中的集合检索所有文档
数据库结构Swift 从firebase中的集合检索所有文档,swift,firebase,google-cloud-firestore,Swift,Firebase,Google Cloud Firestore,数据库结构 futsal\u列表。文档(futsal\u uid)。收藏(“图书信息”)。文档(日期格式为“2019年5月9日”)。收藏(“新请求”)。文档(userUid) 在useruid中有类似于map的 time[ 6AM : timestamp 7AM : timstamp, ] 我正在使用google cloud firestore,我想从所有日期检索所有新请求,它需要是实时侦听器。我还想根据日期划分表视图部分。我只显示今天和即将到来的日期,没有显示过去的日期 问题- 当一个新的
futsal\u列表。文档(futsal\u uid)。收藏(“图书信息”)。文档(日期格式为“2019年5月9日”)。收藏(“新请求”)。文档(userUid)
在useruid中有类似于map的
time[
6AM : timestamp
7AM : timstamp,
]
我正在使用google cloud firestore,我想从所有日期检索所有新请求,它需要是实时侦听器。我还想根据日期划分表视图部分。我只显示今天和即将到来的日期,没有显示过去的日期
问题-
当一个新的请求到达表时,在表中多次添加单个请求,当我返回并返回视图时,显示的数据很好
这就是我尝试过的
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()
}
}
})
}
}
})
}
}
}
如图所示,该结构有点奇怪,很难理解。你能截屏一段你的结构并将其包含在问题中吗?另外,当你说你想从所有日期获取所有新请求时,这意味着什么?由于当前已设置,你每个日期只能有一个新请求,因为你不能有重复的documentID(键)。因此,在book_info中,如果您有一个日期像20190508,则不能有另一个具有相同日期的文档。同样,如果您在newrequest的该日期内有一个集合,则在该日期内不能有另一个具有相同名称的集合。如图所示,结构有点奇怪,很难理解。您可以截屏显示您的结构片段吗重新设置并将其包含在问题中?另外,当您说希望从所有日期获取所有新请求时,这意味着什么?由于当前已设置,每个日期只能有一个新请求,因为您不能有重复的documentID(键)。因此,在book_info中,如果您的日期为20190508,则您不能拥有另一个具有相同日期的文档。同样,如果您在newrequest的该日期内拥有一个集合,则您在该日期内不能拥有另一个具有相同名称的集合