Cloud Firestore Swift:如何删除文档查询

时间:2018-08-10 18:48:58

标签: ios swift firebase google-cloud-firestore

我想删除我的集合用户名中所有具有UID字段作为当前用户ID的文档。到目前为止,这是我的代码:

let uid = Auth.auth().currentUser!.uid
db.collection("Usernames").whereField("UID", isEqualTo: uid).delete

但是出现错误:

  

“查询”类型的值没有成员“删除”。

有什么特殊的技巧吗?谢谢!

1 个答案:

答案 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
        }
   }
}

这只是一个建议。肯定还有其他选项可能对您的应用程序更好。