reactjs - firebase 更新功能,覆盖数据
问题描述
我喜欢下面的火力基地。我想通过更新将新项目添加到喜欢数组中。我的问题是,当我尝试执行更新函数时,它会覆盖 likes 数组中的其他数据。这是代码:
db.collection("posts").doc(postId).update({likes :[{username: username, isLiked: true}]})
解决方案
虽然update
可以更新特定字段,但它总是会覆盖整个字段。因此,您的代码将整个likes
数组替换为您在update
调用中传递的值。
要更新 Firestore 文档中的数组,您有两种选择:
- 读取文档,从文档中获取现有值,更新值,写回整个数组。
- 如果新项目尚不存在,则将其合并到数组中。
鉴于您的用例,您似乎需要合并,这也是最简单的选择:
db.collection("posts").doc(postId)
.update({likes : firebase.firestore.FieldValue.arrayUnion({username: username, isLiked: true})})
仅当该组合尚不存在时,上述代码才将 和 的组合添加username
到数组中。isLiked