【发布时间】:2020-08-30 16:08:54
【问题描述】:
这是我第一次使用 Firestore 查询,我正在努力解析数据。我通常在获取文档时使用相同的设置(这有效),但是当我将它附加到查询时它不起作用。
我正在尝试查询数据库中最常访问的商店,以便稍后将其设置为收藏。
我的代码:
func findFavouriteShop(completed: @escaping ([String]) -> Void)
{
// Variables
let dispatch = DispatchGroup()
var dummyDetails = [String]()
// References
let db = Firestore.firestore()
let userID = Auth.auth().currentUser?.uid
let groupCollectionRef = String("visits-" + userID! )
// Query the database for the document with the most counts
dispatch.enter()
db.collectionGroup(groupCollectionRef).order(by: "count", descending: true).limit(to: 1).getDocuments { (snapshot, error) in
if let err = error {
debugPrint("Error fetching documents: \(err)")
}
else {
print(snapshot)
guard let snap = snapshot else {return}
for document in snap.documents {
let data = document.data()
// Start Assignments
let shopName = data["shopName"] as? String
let count = data["count"] as? String
// Append the dummy array
dummyDetails.append(shopName!)
dummyDetails.append(count!)
}
dispatch.leave()
}
dispatch.notify(queue: .main, execute: {
print("USER number of documents appended: \(dummyDetails.count)")
completed(dummyDetails)}
)
}
使用 Print 语句看起来好像保护语句将函数踢了出去。处理器没有到达 for 循环来执行分配。当我打印快照时,它返回一个空数组。
我确定我使用了错误的符号,但我不确定在哪里。
【问题讨论】:
-
去掉orderBy()和limit()看看能不能拿到文件
标签: swift firebase google-cloud-firestore