Firestore实时更新文档here
以下是您可以在文档中找到的评论。
重要提示:第一个查询快照包含所有已添加的事件 与查询匹配的现有文档。这是因为你是 获取一组使您的查询快照最新的更改 查询的初始状态。例如,这允许你 直接从您在第一个中收到的更改填充您的UI 查询快照,无需添加特殊逻辑来处理 初始状态。
我理解它是如何有用的,但在某些情况下它只是困扰我,我想知道是否有任何方法可以防止第一个查询快照骚扰听众。
答案 0 :(得分:2)
AtomicBoolean isFirstListener = new AtomicBoolean(true);
commentListener = getLectureCommentsCollecReference(courseId, lectureId)
.addSnapshotListener((queryDocumentSnapshots, e) -> {
if (isFirstListener.get()) {
isFirstListener.set(false);
//TODO Handle the entire list.
return;
}
for (DocumentChange dc : queryDocumentSnapshots.getDocumentChanges()) {
switch (dc.getType()) {
case ADDED:
sendCommentAddedEvent(DataParser.parseComment(dc));
case MODIFIED:
sendCommentUpdatedEvent(DataParser.parseComment(dc));
break;
}
}
});
这是一种做法。 我在评论功能中使用它来收听新评论添加以及评论是否被修改。
答案 1 :(得分:1)
无法抑制获取初始数据。
根据用例的不同,您可能希望将侦听器附加到数据的子集。例如。如果您有仅附加方案(例如聊天),则可以开始侦听在"现在"之后修改的数据。