Как справиться с взаимодействием баз данных - PullRequest
0 голосов
/ 22 апреля 2020

Моим пользователям нужно будет загрузить файлы, и мое приложение сохранит их в виде строк base64. Firestore не оптимизирован для хранения больших файлов в документах. Поэтому у меня есть два варианта:

  • Загрузить их в хранилище Firebase

  • Разрезать строку base64 в различных документах по коллекции.

Они оба потребуют, чтобы данные моего приложения сохраняли ссылку на идентификатор хранилища или коллекции.

Моя дилемма: если загрузка прошла успешно, я отправляю свои данные в Firestore , Но что, если сообщение не удается? У меня будет загруженный файл, на который нет ссылок ни в одном документе Firestore. Та же проблема, если я решу начать с публикации документа, а затем загрузить файл.

Я пытаюсь сделать что-то глупое? Я что-то упустил? Что мне делать?

1 Ответ

3 голосов
/ 22 апреля 2020

Вы можете использовать облачные функции для синхронизации Firestore и Storage c. Например:

  1. Сначала запишите документ в Firestore без указания пути к файлу в хранилище. запомните уникальный идентификатор этого документа.
  2. Затем клиент может загружать данные напрямую в хранилище, используя этот идентификатор в пути к файлу.
  3. Облачные функции запускаются при завершении загрузки хранилища, анализирует идентификатор документа из файла, затем обновляет соответствующий документ в хранилище (или создает его, если он еще не существует).

Вы также можете написать триггеры для сохранения документа / файла синхронизируется c после того, как один удален путем удаления другого.

Ключ здесь в том, что каждый загруженный файл должен знать, как найти спаренный документ, и документ должен также иметь возможность найти парный файл. В этом помогает уникальный идентификатор.

...