【发布时间】:2020-06-20 12:40:32
【问题描述】:
我正在开发一个应用程序,用户 (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 ID(firebase 上的另一个查询,列表中每个用户一个)并在 OneSignal 服务中为每个用户注册一个通知。
P.S:OneSignal ID 可以更改,因为这种情况我无法自费保存 OneSignalID。
我猜这个结构会起作用,但似乎这不是最好的解决方案,因为许多查询在“后台”上运行,这在未来可能会很昂贵。
对于这种情况,有人有更好的建议吗?也许火库上的另一个结构......
我希望我能很好地解释“问题”。英语不是我的第一语言。
谢谢!
【问题讨论】:
标签: database firebase data-structures google-cloud-firestore nosql