firebase - 如何确保只获取 DB 中最近的 x 个帖子?
问题描述
我试图弄清楚我应该如何确保我只从数据库中获取最新的 x 帖子。
我当前的 fetch 方法工作如下:
GetPeopleIFollowAnd loop over each UID
For each UID fetch his posts
但是,通过这样做,我不能有效地(快速)只获取最近的 x 个帖子。我怎样才能做到这一点?
我有一些可能的想法:
- 创建一个新节点,每次您的一个关注者发帖时,他们都会在您的 UID 下添加一个时间戳。因此,当我获取时,我会为每个 UID 循环遍历此 FollowersWhoCreatedRecently 并且仅对前 10 个执行此操作
我在上述解决方案中看到的问题是,如果用户有数百万人关注他们,那么在更新这百万人中的每一个时,这将非常缓慢
我的帖子数据库结构如下
Post
UID
postID
Media
media
image: URL
基于如下的追随者结构:
WhoFollowsMeNode/UID/uid: true
每次用户发帖时,我都必须遍历此列表,在该列表中,我将为每个用户将帖子添加到那里的 timeLine ... 这似乎是不可撤销的,但他们似乎在这里所做的事情。
解决方案
在实时数据库上,您可以使用limitToLast()
方法,然后您可以传递要带多少元素,该方法将获取已添加到节点中的最后信息,因为文档是按时间戳排序的,如果您获取他们与limitToLast(10)
您可以获得用户的最后 10 个帖子。
如果您正在使用帖子列表,您可以在向用户显示时反转列表,这样做,您将首先看到最新数据和下面的旧数据。
推荐阅读
- angular - Angular中Highcharts工具提示的单元测试
- php - 尝试更新 woocommerce 订单状态时,Wordpress 冻结
- python - python相当于matlab mvnrnd?
- php - MongoDB 驱动程序
- spring-boot - 在使用 OAuth2 保护应用程序的同时,我想公开一些可供任何人访问的 URL
- java - 如何在特定时区(“欧洲/巴黎”)中获取今天的 startDate 和 endDate 的 UTC 瞬间
- python - 调整 MLPRegressor 超参数
- angular - 部署角度应用程序时如何避免路由更改?
- javascript - 如何从动态表单中获取名称和值。(反应)
- three.js - 我无法使用 glb/gltf 资产在 three.js 中显示 aoMap