将 Firestore 数据库中字段的 int 值递增 1

Increment the int value of a field by one in Firestore database

提问人:JOHNY 提问时间:11/6/2023 最后编辑:Frank van PuffelenJOHNY 更新时间:11/6/2023 访问量:46

问:

我目前有这个代码:

let brandDocRef = self.database.collection("Companies").document("Nike")
brandDocRef.addSnapshotListener { [weak self] snapshot, error in
    guard let data = snapshot?.data(), error == nil else {
        return
    }
    if let clientsValue = data["Clients"] as? Int {
       clientsValue = clientsValue + 1                       
      
        let clientData: [String: Int] = [
        "Clients": clientsValue
        ]
        brandDocRef!.setData(brandData, merge: true) { error in
        if let error = error { } else { }
  }

此代码应该进入我的 firestore 数据库,获取“Nike”文档的“clients”字段中的值,然后将其递增 1,并更新文档中的值。但是由于它是一个 ,函数的值会发生变化,并且该函数会再次被调用。这创造了一个无限循环;它一遍又一遍地递增该值。如何避免这种循环?snapshotListenerclientsValue

Swift Firebase 谷歌云 Firestore

评论


答:

0赞 Frank van Puffelen 11/6/2023 #1

如果只想读取和递增一次值,请使用 getDocument 调用而不是 .这将只读取一次数据,因此不会有循环。addSnapshotListener