首页 > 解决方案 > 当涉及到 Firestore 中的定价时,对文档的查询是如何工作的?

问题描述

假设我在 Firestore 中有一个集合,其中存储了我的应用程序中所有用户的“故事”,我们还假设我在那里保存了一千个故事,但我希望每个用户在点击某个按钮时只检索他的/她自己的故事(不是全部)。我实际上是通过在我的应用程序中使用此代码来做到这一点的

db.collection("stories")
        .whereEqualTo("userID", uidOfCurrentUser)
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        Log.d(TAG, document.getId() + " => " + document.getData());
                    }
                } else {
                    Log.d(TAG, "Error getting documents: ", task.getException());
                }
            }
        });

我在这里担心的是:Firebase 会将此循环视为对每个文档的读取吗?换句话说,他们会在用户每次点击该按钮时向我收取 1000 次阅读的费用吗?(如果是这样,那就太可怕了)

假设用户在这 1000 个故事中只有 2 个文档,他们会将其视为 2 次阅读还是 1000 次?处理这种情况的最佳解决方案是什么?

标签: javaandroidfirebasegoogle-cloud-firestorefirebase-authentication

解决方案


当涉及到 Firestore 时,您只需为收到或更改/删除的数据付费。数据库上有多少并不重要。

如果您的数据库中有 1000 个故事,但您query只给您 2 个,则您只需为这 2 个故事付费。

你可以在这里阅读更多关于它的信息。

在此处输入图像描述

您还应该检查您的查询是否需要在自动查询旁边创建和索引。您可以在此处阅读更多相关信息。


推荐阅读