reactjs - React Firebase 根据时间戳值获取最新记录
问题描述
我正在使用 ReactJS 和 Firebase 开发基于 Web 的实时聊天应用程序,为此我的 Firebase DB 结构是:
在每个消息节点上,我都有一个timestamp
值,我想通过对该timestamp
值进行排序来仅获取 5 或 10 条记录(就像我们在 RDBMS 中所做的那样 - OrderBy 和 Limit )。
为此,我尝试过:
messageRef.orderByKey().on("child_added", function(snapshot) {
console.log(snapshot.key);
});
和
messageRef.orderByChild("created_at").on("child_added", snap => {
console.log(snap.val());
});
但并没有只得到消息节点,而是他们返回那里的父节点。因此,请让我知道是否有任何方法可以直接获取这些记录,而无需通过每个节点。
提前致谢。
解决方案
您messageRef
获取整个数据库中的所有节点,这也是您获取父节点的原因。
如果您只想获取按时间戳过滤的最新消息,请尝试以下操作:
var messageRef = firebase.database().ref('chatroom_indiv..../').orderByChild('created_at').limitToLast(10);
类似的东西对你有用吗?
推荐阅读
- python - 使用 Tortoise ORM 和 FastAPI 在 Heroku 上出现 SSL 错误
- python - 如何在 Python 中为包含文本的列编写 for 循环?
- flutter - 为什么会出现错误:RenderBox 未布置:RenderViewport#a3518 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
- c# - EF Core 动态包含和排序
- c - c程序的时间复杂度
- c# - 当托管服务必须在发出请求之前运行时,是否应该在 ASP.NET Core Web API 项目中使用托管服务?
- javascript - 什么是最好的更新数组内的状态
- github-actions - 使用 Github Actions 将合并的 PR 添加到项目中
- javascript - “未知”可观察类型上不存在属性“过滤器”
在 Rxjs 6 - javascript - 带有条件的 Vue.js 禁用按钮不起作用