![](/img/trans.png)
[英]Firebase realtime database multipath updates vs firestore database batched write
[英]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()的调用,这似乎效率很低。 我很好奇我将如何访问:
给出以下代码段:
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.