我像波纹管一样火力四射。我想通过更新将新项目添加到点赞数组。我的问题是,当我尝试执行更新功能时,它会覆盖Likes数组中的其他数据。 这是代码:
db.collection("posts").doc(postId).update({likes :[{username: username, isLiked: true}]})
答案 0 :(得分:0)
尽管update
可以更新特定的字段,但它将始终覆盖整个字段。因此,您的代码将用您在likes
调用中传递的值替换整个update
数组。
要更新Firestore文档中的数组,可以有两个选择:
鉴于您的用例,似乎您需要合并,这也是最简单的选择:
db.collection("posts").doc(postId)
.update({likes : firebase.firestore.FieldValue.arrayUnion({username: username, isLiked: true})})
仅当尚不存在username
和isLiked
的组合时,上述代码才将其添加到数组中。
有关详细说明,请参见updating elements in an array上的文档和updating fields in nested objects上的部分,它们在类似的用例中也可能有用。