首页 > 解决方案 > 覆盖 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())。

几点注意事项:

  1. 因为我使用的是add(),所以文档 ID 是随机的。
  2. 我不能使用每个对象的名称作为标识符,因为上传的一些 json 文档具有不同的结构。
  3. set()允许我合并,是的,但我不知道如何在不知道文档 ID 的情况下合并文档。
  4. 每次上传文件时都可以选择删除子集合,但这听起来像是很多不必要的工作(以及很多不必要的处理)?

add()如果有任何替代方法可以使用以避免重复问题,我愿意接受更改我的实现的建议:)

编辑:上面的实现将从云函数中运行。

标签: javascriptnode.jsfirebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


推荐阅读