我正在做一个允许登录用户向firestore firebase报告他们丢失的物品的东西。现在我所做的是成功地将用户报告的细节注册到'reports'集合中。
但是每次同一个用户报告另一个项目时,以前报告的项目的详细信息就会被覆盖。我希望它以这样一种方式被添加到同一个集合中,而不会覆盖以前的项目。就像在数组中,当你添加一个项目时,它不会被覆盖,而是添加到数组中
我已经做过了
第一个
我想要的是这个
{
"posts": {
"0": {
"author": "gracehop",
"title": "Announcing COBOL, a New Programming Language"
},
"1": {
"author": "alanisawesome",
"title": "The Turing Machine"
}
}
}
有人能帮我做这个吗?
2条答案
按热度按时间cunj1qz11#
调用
setDoc()
而不调用merge: true
将覆盖文档。您还将传递用户id作为以这种方式编写的文档id。请尝试调用addDoc()
,并在获得下载URL后使用update。其中一些操作还可以稍微清理异步语句:如果您不希望按用户ID保存每个报表,而只是让报表集合成为记录数组,则应删除用户ID部分。
t9aqgxwy2#
假设目标是在
reports/user.id/
中添加新帖子而不覆盖现有帖子,请尝试以下方法:1.首先在
reports/user.id
下为新帖子创建一个引用,并使用自动生成的ID,这将是newPostRef
1.使用
newPostRef
设置报告内容1.上传图像并获取下载网址(与原始网址相同)
1.再次使用
newPostRef
更新包含下载URL的帖子,使用{ merge: true }
示例:
reports/user.id
将是一个接受多个带有自动ID的帖子的集合,希望这是这里想要的结果。