我想删除我的用户名集合中包含 UID 字段作为当前用户 ID 的所有文档。到目前为止,这是我的代码:
let uid = Auth.auth().currentUser!.uid
db.collection("Usernames").whereField("UID", isEqualTo: uid).delete
但出现了错误:
“查询”类型的值没有成员“删除”。
这有什么特殊的技术吗?谢谢!
导游 https://firebase.google.com/docs/firestore/manage-data/delete-data向您展示如何删除数据。它还指出,不应从客户端删除整个集合。无法从查询中删除——您必须获取所有文档并单独删除它们。如果可能存在大量文档,那么您应该在服务器端执行此操作。如果您确定只有少数,您可以查询它们,获取文档引用,然后删除它们,如下所示:
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
}
}
}
这只是一个建议。肯定还有其他选项可能更适合您的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)