我正在使用 Firebase(和 AngularJS)构建一个聊天应用程序,并且我有一个与上的数据结构类似的数据结构此 Firebase 文档页面 https://firebase.google.com/docs/database/web/structure-data#fanout。这种结构有利于不必检索大量不需要的数据,但我似乎不明白一件非常简单的事情。
当用户连接到我的应用程序时,我的数据如下所示:
如何检索他们最近更新的 10 个群组并在群组中发布新消息时保持此列表更新?
// An index to track Ada's memberships
{
"users": {
"alovelace": {
"name": "Ada Lovelace",
// Index Ada's groups in her profile
"groups": {
// the value here doesn't matter, just that the key exists
"techpioneers": true,
"womentechmakers": true
}
},
...
},
"groups": {
"techpioneers": {
"name": "Historical Tech Pioneers",
"members": {
"alovelace": true,
"ghopper": true,
"eclarke": true
},
"lastUpdateTime": [SOME TIMESTAMP HERE]
},
...
}
}
如果您愿意阅读更多信息
如你所见,我添加了"lastUpdateTime": [SOME TIMESTAMP HERE]
上面的代码,因为这就是我为我的应用程序所做的事情。我无法弄清楚用户组列表的“刷新过程”应该是什么。
如果我的用户有 100 个组,我是否应该检索组 ID 列表并一一获取实际组,以便只能保留最近的 10 个组(我很确定这不是正确的方法)?
此外,每当有人在群组中发布消息时,它都会更新lastUpdateTime
在 Firebase 中,但如何使用户组列表与此保持同步?
我尝试过一些非常丑陋的子事件、orderBys 以及每当有东西触发时执行的整个函数链的组合,但它不起作用,而且看起来非常复杂,毫无意义。扁平化数据的整个想法是将查询/获取保持在最低限度,我觉得到目前为止我所做的事情太繁重了。