如何向Firestore添加多条记录且避免新记录覆盖原有数据
问题原因
你当前的代码每次都对saveups集合下ID为uid的固定文档调用set方法,Firestore的set方法默认行为是直接覆盖目标文档的全量内容,因此新写入的数据会直接覆盖已有的旧记录。
解决方案
根据你的使用场景选择对应实现方式:
- 如果你需要为同一个用户添加多条独立的收支记录,不要用
uid作为固定文档ID,调用add方法让Firestore为每条记录自动生成唯一ID,同时将用户uid作为字段存入文档方便后续查询:await this.$fire.firestore.collection('saveups').add({ uid: uid, title: payload.title, amount: payload.amount }) - 如果你确实需要修改
uid对应文档的指定字段,不想覆盖文档内其他已有内容,给set方法添加merge配置开启合并写入:await this.$fire.firestore.collection('saveups').doc(uid).set({ title: payload.title, amount: payload.amount }, { merge: true }) - 如果你需要在同一个用户文档内用数组存储多条记录,使用内置的数组追加方法写入新内容:
await this.$fire.firestore.collection('saveups').doc(uid).update({ records: this.$fire.firestore.FieldValue.arrayUnion({ title: payload.title, amount: payload.amount }) })
内容的提问来源于stack exchange,提问作者Lev Vorobev
相关产品推荐
相关产品推荐

