Swift Firestore 更新字段值

Kav*_*gam 1 ios firebase swift4 google-cloud-firestore

在 firestore 中,我们添加了多个字段,但没有指定 documentID(自动 ID)。我需要更新特定的字段值,例如:

  1. 我的收藏中有个人详细信息列表,其中包含姓名、年龄和性别
  2. 我需要更新 name = kavin 的特定字段值

这是我尝试过的代码 self.DBRef.collection("users").whereField("name", isEqualTo: "kavin") 如何更新此字段值

Den*_*und 10

从您的问题中不清楚您是否希望名称是唯一的,或者是否有许多名为"kavin" 的用户。

但是假设用户名是唯一的,你可能会这样解决

self.DBRef.collection("users")
    .whereField("name", isEqualTo: "kavin")
    .getDocuments() { (querySnapshot, err) in
        if let err = err {
            // Some error occured
        } else if querySnapshot!.documents.count != 1 {
            // Perhaps this is an error for you?
        } else {
            let document = querySnapshot!.documents.first
            document.reference.updateData([
                "age": 99
            ])
        }
    }
Run Code Online (Sandbox Code Playgroud)

您必须进行一个异步查询该查询将返回一个QuerySnapshot,其结果是一个文档数组。结果查询在您的文档中没有任何“唯一”字段的概念。因此,当名称应该是唯一的时,如果您得到多个结果,您必须处理其含义的逻辑。

检索到查询结果后,您可以使用reference属性直接访问对该文档的引用,更新所需的字段