现在你有你的
messagesRef
设置为最近100条消息的列表。因此,如果添加了新消息,则删除最旧的消息。这是按预期进行的。
听起来你想要一个不同的行为:从100条最近的消息开始,然后添加任何新的消息进来。为此,您需要删除
limitToLast
从你的询问中。为了确保您仍然以(最多)100条消息开始,您需要添加一个不同的条件:告诉查询从特定消息开始。
步骤如下:
-
在N-100位置找到信息
-
在那条消息上开始查询
在代码中,这应该类似于:
ref.orderByKey().limitToLast(100).once('child_added', function(snapshot) {
var oldestKey = snapshot.key;
this.messagesRef = this.afDB.list(
`/messages/${this.me.uid}/conversations/${this.contact.uid}/messages`, ref =>
ref.orderByKey().startAt(oldestKey)).valueChanges());
})