javascript - 覆盖 Firestore 中的集合
问题描述
我有一个名为“用户”的集合,其中包含一个文档列表,每个文档对应一个特定的用户。在每个用户文档中都有一个名为“events”的子集合,其中包含通过解析和处理用户上传的多个 json 文件创建的文档列表。
架构: 用户(集合)-> 用户(x)(文档)-> 事件(集合)-> 事件对象文档。
一个示例 json 文件(实际上,这些文件比下面的示例长得多):
{
"events": [
{
"name": "name1",
"start": 1584165600,
"end": 1584180000
},
{
"name": "name2",
"start": 1583956800,
"end": 1583978400
},
{
"name": "name3",
"start": 1583550000,
"end": 1583978400
},
{
"name": "name4",
"start": 1578549600,
"end": 1583978400
}
]
}
因此,在这种情况下,“事件”集合中将有四个文档(每个子对象如上所示)。
我目前正在使用add()
firestore 命令创建上述文档。
我面临的问题是我不确定如何实现上述操作,以便每次用户上传文件的新版本时,集合都会被新文档覆盖(这样就不会有重复,这将否则会发生add()
)。
几点注意事项:
- 因为我使用的是
add()
,所以文档 ID 是随机的。 - 我不能使用每个对象的名称作为标识符,因为上传的一些 json 文档具有不同的结构。
set()
允许我合并,是的,但我不知道如何在不知道文档 ID 的情况下合并文档。- 每次上传文件时都可以选择删除子集合,但这听起来像是很多不必要的工作(以及很多不必要的处理)?
add()
如果有任何替代方法可以使用以避免重复问题,我愿意接受更改我的实现的建议:)
编辑:上面的实现将从云函数中运行。
解决方案
推荐阅读
- python - 为什么通过 pip3 安装任何包时,会出现 configparser.InterpolationSyntaxError 错误?
- c# - 使用 ASP.NET MVC 属性路由验证和传递控制器级参数
- r - r 非 NA 列值之间的差异
- javascript - 使用 fetch 获取 API 响应负载
- r - 是否可以通过中介运行多组 SEM?
- mysql - 想要一个解决方案来使用单个查询分别查找上限和下限计数
- python - 尝试在 csv 文件中搜索项目
- python - MySQLdb - 没有游标的参数化查询?
- python - 如何在函数运行期间忽略所有用户输入?
- python - 在运行时动态设置 Python 解释器优化