func readFriendStatus() {
let docRef = self.db.collection("Friends").document("1")
docRef.getDocument(completion: { document, error in
if let document = document, document.exists {
let name = document.get("Name") ?? "no name"
let status = document.get("Status") ?? "no status"
print(name, status)
} else {
print("no document")
}
})
}
和输出
Garfunkle Unsent
然后是将“状态”字段更新为“已发送”的代码
func writeFriendStatus() {
let data = ["Status": "Sent"]
let docRef = self.db.collection("Friends").document("1")
docRef.setData(data, merge: true)
}
3条答案
按热度按时间irtuqstp1#
首先,我要感谢@Doug史蒂文森的友好回应。在我的例子中,我必须将对象数组改为子集合。
iezvtpos2#
我相信问题是:
如何更新存储在数组中的文档中的特定字段。
只要你知道你想要更新的文档的documentId-这里是解决方案。
假设一个结构与问题中的相似
然后说我们想把加芬克尔的状态改为发送
我将包括一个函数来读取文档1,Garfunkle的,然后第二个函数来更新状态发送。
读取索引1处的文档并打印其字段-此函数仅用于测试,以显示更改状态字段之前和之后的字段值。
和输出
然后是将“状态”字段更新为“已发送”的代码
和输出
qlfbtfca3#
在一个transaction中,获取文档,修改客户端内存中适合的对象字段,然后将整个字段更新回文档。