【发布时间】:2017-12-18 06:29:49
【问题描述】:
我正在 Angular 4 中创建一个聊天应用程序,它在 Firebase 数据库中存储和读取消息。
我编写了一个查询来仅检索该特定对话的最新 10 条消息。
this.messages = this.db.list('messages/' + conversationId, { query: { limitToLast: 10 } });
db:AngularFireDatabase,消息:FirebaseListObservable
现在我想在某人按下“更多”按钮(或滚动到顶部)时检索 10 条较旧的消息,但我在为此编写查询时遇到了困难。
这是我尝试过的:
this.messages = this.db.list('messages/' + conversationId, { query: { orderbyChild: 'id', startAt: start, limitToLast: 10 } });
这里的'start' 是一个类似'-KovtCl4hEUPR2LfQfpc' 的 id,它是 this.messages FirebaseListObservable 中最旧消息的 id。我还尝试将此 ID 作为字符串手动传递给执行上述查询的方法。
尝试按照此处所述进行操作:
- https://stackoverflow.com/a/43969460/5437768
- https://firebase.google.com/docs/reference/android/com/google/firebase/database/Query
- https://firebase.google.com/docs/database/web/lists-of-data#filtering_data
最后一个查询给了我 0 个结果。
Firebase 布局
/messages/conversationId/messageId/{message}
"messages": {
"-k32b": {
"-kT3d": {
"content": "Hello World!",
"id" : "-kT3d"
},
"-kT4c": {
"content": "How are you World?",
"id" : "-kT4c"
}
}
}
我在这里做错了什么?
【问题讨论】:
标签: angular firebase firebase-realtime-database lazy-loading angularfire2