Перезапись коллекции в пожарном магазине - PullRequest
2 голосов
/ 24 апреля 2020

У меня есть коллекция с именем «users», в которой находится список документов, каждый из которых соответствует определенному пользователю. В каждом из этих пользовательских документов есть подколлекция под названием «события», в которой содержится список документов, которые были созданы путем анализа и обработки нескольких 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(), идентификаторы документов являются случайными.
  2. Я не могу использовать имя каждого объекта в качестве идентификатора, поскольку некоторые json загружаемые документы имеют различную структуру.
  3. set() позволяет мне объединяться, да, но я не знаю, как объединять документы, не зная их идентификаторов.
  4. Существует возможность удаления вложенной коллекции каждый раз при загрузке файла, но это звучит как много ненужной работы (и много ненужная обработка)?

Я открыт для предложений по изменению моей реализации, если есть какие-либо альтернативы использованию add(), чтобы избежать проблемы дублирования:)

Изменить: вышеописанная реализация будет работать из облачной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...