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