我想删除我的集合用户名中所有具有UID字段作为当前用户ID的文档。到目前为止,这是我的代码:
let uid = Auth.auth().currentUser!.uid
db.collection("Usernames").whereField("UID", isEqualTo: uid).delete
但是出现错误:
“查询”类型的值没有成员“删除”。
有什么特殊的技巧吗?谢谢!
答案 0 :(得分:3)
The guide向您展示如何删除数据。它还指出,不应从客户端删除整个集合。无法从查询中删除-您将必须获取所有文档并分别删除它们。如果存在大量文档的可能性,则应在服务器端进行操作。如果您确定只有少数几个,则可以查询它们,获取文档引用,然后删除它们,如下所示:
let uid = Auth.auth().currentUser!.uid
db.collection("Usernames").whereField("UID", isEqualTo: uid).getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
document.reference.delete()
}
}
}
如果这是需要经常执行的操作,那么这是检查数据结构的好机会。也许进行一个收集,其中用户的用户名列在其uid
下。然后,您可以查询单个文档,并使用它引用要删除的其他文档。
Usernames: {
byUID: {
uid1: {
funky_monkey: true,
goodTimes: true
}
}
byUsername: {
funky_monkey: {
UID: uid1
}
}
}
这只是一个建议。肯定还有其他选项可能对您的应用程序更好。