减少读取Firestore的次数

泗水州立大学

我有一个约会类的应用程序(不支持聊天功能),其中显示了符合用户特定条件的所有配置文件的列表。我为此使用了实时快照侦听器。

 query.addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot snapshot,
                                @Nullable FirebaseFirestoreException e) {
                if (e != null) {
                    return;
                }
                if (snapshot != null && !snapshot.isEmpty()) {
                    List<FeedDetails> feedDetailsList = new ArrayList<>();
                    for (DocumentSnapshot document : snapshot.getDocuments()) {
                        FeedDetails feedDetails = document.toObject(FeedDetails.class);
                        feedDetailsList.add(feedDetails);
                    }
                    feedItemAdapter.updateData(feedDetailsList);
                } 

            }
        });

在个人资料文档中,我有10-12个字段,其中一个在线/离线信息字段。因此可以说,如果某些配置文件的其他字段没有更改,但在线/离线状态发生了更改,那么侦听器将再次读取该文档。有什么方法可以减少这些读取?

亚历克斯·莫莫

我有一个10-12字段,其中包含一个在线/离线信息字段。因此,假设某些配置文件的其他字段没有更改,但在线/离线状态发生了变化,那么侦听器将再次读取该文档。

在Cloud Firestore中,您无法只听文档的一组属性而排除其他属性。这是整个文档,或者什么也没有。因此,如果将此字段online=true更改为online=false,那么您将获得整个文档。

Cloud Firestore侦听器在文档级别启动,并始终返回完整的文档。不幸的是,尽管服务器端SDK的select()方法中确实存在此选项,但无法通过客户端SDK仅请求文档的一部分

如果您不想收到有关特定字段的通知,请考虑添加一个仅包含这些字段的文档额外集合。因此,请创建额外的集合,其中每个文档仅包含您不需要的数据。这样,您将不会收到有关在线/离线更改的通知。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章