如何在Firebase查询中使用startAt()?

Jun*_*tae 7 firebase firebase-realtime-database

在此输入图像描述

让我们假设上面的firebase数据库模式.

我想要的是在"15039996197"时间戳之后检索消息.每个消息对象都有一个createdAt属性.

如何在特定时间戳之后才能收到消息?在这种情况下,最后两条消息是我想要检索的.

我试过firebaseb.database().ref(`/rooms/$roomKey/messages`).startAt('15039996197')但失败了.它返回0.我该怎么做?

Gab*_*eto 7

你的查询的情况是它期望message节点应该有一个数字值开始,在这种情况下你想要一个具有名称的子节点createdAt.因此,在这种情况下,您必须指定要按顺序排序createdAt,因此您需要执行此操作

firebase.database().ref(`/rooms/$roomKey/messages`).orderByChild('createdAt').startAt('15039996197').on(//code);
Run Code Online (Sandbox Code Playgroud)

这样它就会返回里面的所有节点,message这个节点有一个名为createdAt它的子节点15039996197.对你的查询进行排序可能会对性能有点不利,因为我会看一下.indexOn规则.

有关更多信息,请查看此处.

希望这可以帮助.