【问题标题】:How to get size for Firestore POSTID Collection in Android? [duplicate]如何在 Android 中获取 Firestore POSTID 集合的大小? [复制]
【发布时间】:2020-05-18 14:31:40
【问题描述】:

查看代码:

private void initFirebase() {
        try {
            for (int i = 1; i < 16; i++) {
                mDatabase.collection(POST_ID).document("1").collection(PREVIEW)
                        .get()
                        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                if (task.isSuccessful()) {
                                    for (QueryDocumentSnapshot document : task.getResult()) {
                                        postMap.putAll(document.getData());
                                    }
                                    if (postMap != null) {
                                        Post post = new Post();
                                        post.setTitle(Objects.requireNonNull(postMap.get(POST_NAME)).toString());
                                        post.setDesc(Objects.requireNonNull(postMap.get(POST_DESC)).toString());
                                        post.setUrl(Objects.requireNonNull(postMap.get(POST_URL)).toString());
                                        postList.add(post);
                                    }

                                    setAdapter();
                                } else {
                                    showLog("Error getting documents: " + task.getException());
                                }
                            }
                        });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

而不是 for (int i = 1; i &lt; 16; i++) { 16 我想要我的 Firestore 集合中存在的大小。我尝试了所有建议,但没有mDatabase.collection(POST_ID).size()

数据库结构:

Firestore-root
     |
     --- PostId (collecton)
          |
          --- 

我想要 postId 集合的大小。

【问题讨论】:

  • 你为什么要循环播放?您从未在代码中使用过变量i
  • @OhhhThatVarun 我会在这里循环“i”:mDatabase.collection(POST_ID).document("1")
  • 你的意思是mDatabase.collection(POST_ID).document(i) ??
  • @OhhhThatVarun 正确
  • 您想要这样做是因为您需要数据库中的所有文档吗?

标签: android google-cloud-firestore


【解决方案1】:

尺寸

int count = 0;
db.collection("POST_ID")
    .get()
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
               count = task.getResult().size();
            } else {
                Log.d(TAG, "Error getting documents: ", task.getException());
            }
        }
    });

private void initFirebase() {
        try {
            for (int i = 0; i < count; i++) {
                mDatabase.collection(POST_ID).document(i).collection(PREVIEW)
                        .get()
                        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                if (task.isSuccessful()) {
                                    for (QueryDocumentSnapshot document : task.getResult()) {
                                        postMap.putAll(document.getData());
                                    }
                                    if (postMap != null) {
                                        Post post = new Post();
                                        post.setTitle(Objects.requireNonNull(postMap.get(POST_NAME)).toString());
                                        post.setDesc(Objects.requireNonNull(postMap.get(POST_DESC)).toString());
                                        post.setUrl(Objects.requireNonNull(postMap.get(POST_URL)).toString());
                                        postList.add(post);
                                    }

                                    setAdapter();
                                } else {
                                    showLog("Error getting documents: " + task.getException());
                                }
                            }
                        });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

然后使用这个count 变量作为大小。

【讨论】:

  • Arey yar,在 mDatabase.collection(POST_ID).document("1") 之后。这个我有 /preview/每个 id 的其他一些字段
  • 请告诉我尺寸
  • @ShefaliSingh 检查更新。
  • Arey baba,你为什么不明白,看:postId / here i / preview /....
  • 这就是我想要循环的原因
猜你喜欢
  • 2019-07-06
  • 1970-01-01
  • 2020-11-24
  • 2019-09-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多