根据Swift 4, Xcode 12的搜索条件更新Firestore中集合中的所有文档



我想知道如何根据Firebase Cloud Firestore中的搜索字符串更新集合中的单个文档。

我有一个集合"Recent",它有以下字段:

  • id:主键
  • chatRoomId:字符串
  • blockStatus:带值的字符串(是/否)

我可以根据

列出所有要更新的文档
func blockChat(_ recent: RecentChat) {
FirebaseReference(.Recent).whereField("chatRoomId", isEqualTo: recent.chatRoomId).getDocuments() { (querySnapshot, err) in
if let err = err {
print("DEBUG: Error getting documents: (err)")
} else {
for document in querySnapshot!.documents {
print("DEBUG: (document.documentID) => (document.data())")
print("DEBUG: (document.data().count)")
FirebaseReference(.Recent).updateData(["blockChat" : "yes"])
}
}
}
}

如何为字段"blockStatus"更新集合中的文档?基于我的搜索字段chatRoomId字符串?例如,如果两个文档的chatRoomId等于"abcd",那么这两个文档的blockStatus字段将更新为"Yes"从默认的"no">

让我重申一下这个问题;

我想查询Firestore中包含chatRoomId的文档字段等于聊天室chatRoomId。对于匹配文档,I然后想用。来更新每个文档blockStatus中的字段"yes"值

下面是查询这些文档并更新字段的代码:

func updateBlockStatusField() {
let chatRoomsCollection = self.db.collection("ChatRooms")
chatRoomsCollection.whereField("chatRoomId", isEqualTo: recent.chatRoomId).getDocuments(completion: { documentSnapshot, error in
if let err = error {
print(err.localizedDescription)
return
}
guard let docs = documentSnapshot?.documents else { return }
for doc in docs { //iterate over each document and update
let docRef = doc.reference
docRef.updateData(["blockStatus" : "yes"])
}
})
}

相关内容

  • 没有找到相关文章