lux*_*uxo 7 arrays dictionary firebase swift google-cloud-firestore
我正在尝试从 Firestore 文档内的数组中附加/删除项目,但每次替换整个数组而不是附加新值时。我已经尝试了以下两种方法:
batch.setData(["favorites": [user.uid]], forDocument: bookRef, options: SetOptions.merge())
batch.updateData(["favorites": [user.uid]], forDocument: bookRef)
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用对象/字典代替数组,但这意味着存储不相关的其他数据(例如密钥),我需要的只是存储在数组中的 ID。这是 Firestore 目前可以实现的功能吗?
Jos*_*llo 10
更新数组中的元素
如果您的文档包含数组字段,您可以使用 arrayUnion() 和 arrayRemove() 添加和删除元素。arrayUnion() 向数组添加元素,但只添加不存在的元素。arrayRemove() 删除每个给定元素的所有实例。
let washingtonRef = db.collection("cities").document("DC")
// Atomically add a new region to the "regions" array field.
washingtonRef.updateData([
"regions": FieldValue.arrayUnion(["greater_virginia"])
])
// Atomically remove a region from the "regions" array field.
washingtonRef.updateData([
"regions": FieldValue.arrayRemove(["east_coast"])
])
Run Code Online (Sandbox Code Playgroud)
事实上,今天这是可能的。使用最新的更新db.collection.updateData
方法实际上将新项目附加到数组而不是替换它。示例用法可以在Firebase 文档中找到。
如果您需要手动执行,则可以使用
FieldValue.arrayUnion([user.uid])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8601 次 |
| 最近记录: |