我正在使用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());
});
但是并不仅获得消息节点,而是返回那里的父节点。因此,请告诉我是否有任何方法可以直接获取这些记录,而无需遍历每个节点。
谢谢。
答案 0 :(得分:0)
您的messageRef
获取整个数据库中的所有节点,这就是为什么还要获取父节点的原因。
如果您只想获取按时间戳过滤的最新消息,请尝试以下操作:
var messageRef = firebase.database().ref('chatroom_indiv..../').orderByChild('created_at').limitToLast(10);
类似的东西对您有用吗?