繁体   English   中英

Cloud Firestore-实时更新的访问字段

[英]Cloud Firestore - Access Field for Realtime Updates

我正在尝试通过Cloud Firestore实时更新访问一个标有vote_count的字段。

下面是我的数据结构:

在此处输入图片说明

以前,在Firebase Realtime Database下,我将使用.addValueEventListener()并向下钻取到“答案”。 但是,使用Cloud Firestore,情况要复杂一些。

  mStoreSelectedPollRef.addSnapshotListener(new EventListener<DocumentSnapshot>() { @Override public void onEvent(final DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) { if (e != null){ Log.v("LISTEN", "LISTEN_FAILED"); return; } if (documentSnapshot != null){ Log.v("Current Data", String.valueOf(documentSnapshot.getData())); mStoreSelectedPollRef.collection(ANSWERS_LABEL).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { updatePollResultAnswersDynamically(task.getResult().size(), documentSnapshot); } }); } else { Log.v("Current Data", "Current Data Nulll"); } } }); 

现在,我正在快照监听器中添加对.get()的调用,这似乎效率很低。 我很好奇我将如何访问:

  1. 答案文件总数。
  2. 每个答案

给出以下代码段:

mStoreSelectedPollRef.collection(ANSWERS_LABEL).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        updatePollResultAnswersDynamically(task.getResult().size(), documentSnapshot);
    }
});

您可以通过以下方式获得答案文档的总数:

task.getResult().size()

由于您已经有了此代码,因此我不确定您要问什么。 如果您要问是否有一种方法可以在不获取文档的情况下获得计数,请查看此处: https : //stackoverflow.com/a/46555026

要访问各个答案文档,请遍历查询快照:

for (DocumentSnapshot document : task.getResult()) {
    Log.d(TAG, document.getId() + " => " + document.getData());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM