gpt4 book ai didi

angular - 仅从 AngularFire 列表中获取新项目

转载 作者:太空狗 更新时间:2023-10-29 18:30:12 25 4
gpt4 key购买 nike

我正在使用 Firebase RTDB 列表实现聊天应用。这是一个简化的数据服务实现:

public monitorConversation(conversationId): Observable<any> {
return this.afDB.list(`/conversations/${conversationId}/messages`).stateChanges();
}

然后我从组件(页面)中调用它,例如:

msgList: Observable<any>;
this.msgList = this.dp.monitorConversation(conversationId);

this.msgList.subscribe(message => {
console.log('new msg:', message.payload.val());
return message.payload.val();
});
});

期望的结果是每次将新消息添加到对话时,我都会收到新消息。发生的事情是我收到了完整的消息列表。我担心的是,随着消息列表的增长,UI 性能将开始受到影响,因为我不得不重新显示列表,并且它消耗的带宽发送不必要的流量,因为我假设整个列表是从 Firebase 检索的出色地。

有没有办法只接收更改的或新的项目?项目在列表中有 $keys 所以我知道哪个项目是哪个。

最佳答案

当然,这是可能的:

Firebase 实时数据库

this.rtdb
.list('path', ref => ref.orderByChild('timestamp').startAt(Date.now()))
.stateChanges();

Firebase Firestore

this.afs
.list('path', ref => ref.where('timestamp', '>', new Date()).orderBy('timestamp'))
.stateChanges();

You can also use limitToLast or limit to get a newest item, regarding angularfire2 official doc.

关于angular - 仅从 AngularFire 列表中获取新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47917896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com