вам нужно создать отдельную коллекцию/документ для чтения агрегированного документа с функцией firebase cloud

# #firebase #google-cloud-firestore #google-cloud-functions

Вопрос:

Я хочу использовать облачную функцию для создания агрегированного документа, содержащего все данные, необходимые для первой страницы моего приложения. Агрегированный документ будет обновляться каждый раз, когда документ добавляется/обновляется в коллекцию Firestore A. Для этого мне нужно создать отдельную коллекцию B, содержащую один документ(агрегированный документ из облачной функции), из которого приложение будет извлекаться при запуске правильно? Следовательно, моя облачная функция будет обновлять один документ в коллекции B? Правильно ли я понимаю, как работает использование облачной функции для агрегирования данных? Большое спасибо

Ответ №1:

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


Вы не даете никаких подробностей о том, что находится в коллекции A (идентичные документы или разные документы?) и что агрегировано (цифры, заголовки,…), но вы должны стараться избегать чтения всех документов из коллекции A каждый раз, когда запускается облачная функция. Это может привести к некоторым ненужным дополнительным затратам. Если на первой странице вашего приложения собраны некоторые цифры, вы можете использовать некоторые счетчики.

Комментарии:

1. Спасибо вам за ваш полезный ответ! Коллекция A содержит различные документы, и агрегируется следующее : Рекомендуемые документы (документы с полем, показанным как true), 10 последних документов (сортировка по добавленному времени). Теперь я отправляю 2 чтения каждый раз, когда мое приложение загружается для этого, поэтому я хочу использовать функцию для объединения того, что мне нужно, в 1 документ, чтобы выполнить только 1 чтение. Следовательно, функция добавит новый документ в список последних документов в агрегированном документе, удалит 1 документ из списка последних документов в агрегированном документе, добавит новый документ, если он включен в список рекомендуемых документов. Имеет ли смысл этот план? Спасибо

2. Да, это имеет смысл. Как только общая стоимость решения будет ниже, чем стоимость текущей ситуации, это имеет смысл. Чтобы рассчитать эту стоимость, вам нужно добавить стоимость чтения и записи Firestore, а также стоимость выполнения облачных функций (с учетом бесплатных шин, например, бесплатных 2 м вызовов в месяц для облачных функций).