React Firebase根据时间戳值获取最新记录

时间:2020-07-14 09:16:04

标签: reactjs firebase firebase-realtime-database

我正在使用ReactJS和Firebase开发基于Web的实时聊天应用程序,为此,我的Firebase数据库结构为:

在每个消息节点上,我都有一个timestamp值,并且我想通过对该timestamp值进行排序来仅获取5或10条记录(就像我们在RDBMS中所做的一样-OrderBy和Limit)。 / p>

为此,我尝试了:

messageRef.orderByKey().on("child_added", function(snapshot) {
    console.log(snapshot.key);
});

messageRef.orderByChild("created_at").on("child_added", snap => {
   console.log(snap.val());
});

但是并不仅获得消息节点,而是返回那里的父节点。因此,请告诉我是否有任何方法可以直接获取这些记录,而无需遍历每个节点。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的messageRef获取整个数据库中的所有节点,这就是为什么还要获取父节点的原因。

如果您只想获取按时间戳过滤的最新消息,请尝试以下操作:

var messageRef = firebase.database().ref('chatroom_indiv..../').orderByChild('created_at').limitToLast(10);

类似的东西对您有用吗?