我已经可以检查集合中是否存在文档。但是,在尝试不同的路径名时,我无法反复检查相同的集合。
例如,我的集合名是用户的UID。此集合中可以有无限数量的文档。当用户添加项目时,这些文档的标题为"UID-0“、"UID-1”、"UID-2“等等。
每当它找到一个已经存在的文档(如"UID-0“)时,它就会将路径请求更改为"UID-+=1”,直到它的数量超过了文档,并且它能够创建和使用该路径名。
每个文档包含大约十几个相同数据模型的字段,当然也包含不同的数据。
var docAlreadyExists: Bool = true
var multipleUserFencesIdCount: Int = 0
var newID: String = ""
let id = self.auth.currentUser?.uid ?? ""
repeat {
print("1")
self.fencesInfoCollection.document("Live").collection(id).document(newID).getDocument(completion: { document, error in
print("2")
if let document = document, document.exists {
print("EXISTS")
multipleUserFencesIdCount += 1
newID = newID.dropLast() + "\(multipleUserFencesIdCount)"
} else {
print("DOES NOT EXIST")
docAlreadyExists = false
}
})
} while docAlreadyExists尽管如此,我如何反复检查文档是否存在,直到路径名称超过其他文件名,并能够使用新数据创建新文档。
编辑:
重复调用1是正确的,但是.getDoc从不调用,因为从来没有打印过2。
发布于 2022-01-26 03:32:40
我想出了一个更好的解决方案来实现我的目标,而不是尝试用不同的in重复调用,我现在正在获取所有的文档,并计算集合中有多少文档。
self.fencesInfoCollection.document(id).collection("Live").getDocuments(completion: { document, error in
if let document = document, document.isEmpty {
print("EMPTY")
} else {
print("DOC1: \(String(describing: document?.count))")
}
})https://stackoverflow.com/questions/70857767
复制相似问题