Я разрабатываю приложение, в котором пользователи (firebase auth) будут регистрировать свои расходы и получать уведомления (OneSignal) каждое воскресенье о расходах, срок действия которых истекает в течение недели. Моя структура firestore:
-users (collection)
---xxXXxxX (user document)
-----email
-----OneSignal ID
-----expenses (collection)
-------yyYYYyY (expense document)
---------dueDate
---------value
---------userId
-------aaAAaaA (expense document)
---------dueDate
---------value
---------userId
---bBBbbBB (another user document)
-----email
-----OneSignal ID
-----expenses (collection)
-------wwWWwwW (expense document)
---------dueDate
(...)
На основе этой структуры каждое воскресенье Google Cloud будет запускать функцию расписания, которая будет запрашивать все расходы, срок действия которых истекает в течение недели (запрос группы сбора - возвращает список расходов, которые может иметь более одного расхода на пользователя.)
Поскольку этот список все еще функционирует, я вручную отделю userId от расходов, создав второй список с одним регистром для каждого пользователя. Со вторым списком функция получит идентификатор OneSignal для каждого пользователя (еще один запрос в firebase, по одному для каждого пользователя в списке) и зарегистрирует уведомление в службе OneSignal для каждого пользователя.
PS: OneSignal ID может измениться , потому что в этой ситуации я не могу сохранить OneSignalID на расходы.
Я предполагаю, что эта структура будет работать, но похоже, что это не лучшее решение, потому что многие запросы выполняются в «фоновом режиме», и это может быть дорого обойдется в будущем.
Есть ли у кого-нибудь лучшее предложение для этого случая? Может быть, другая структура в firestore ...
Надеюсь, что я хорошо объяснил "проблему". Английский sh не мой родной язык.
Спасибо!