当前位置: 首页 > 知识库问答 >
问题:

在一次读取计数中仅从Cloud Firestore获取集合ID

潘国源
2023-03-14

在Cloud Foreshore的这个文档中,提到了对集合ID列表的请求,您需要支付一个文档的阅读费用。

现在我正在为我的项目使用AngularFire和Ionic3。我的要求是只从一个有在哪里条件的集合中获取集合ID。如果我这样做,它将花费我的读取数=结果中的文档数。

let snap = this.afs.collection('path').ref
        .where('field', "==",'data').get();

snap.forEach(x => {
          list.push(x.id);
        });

我无法使用我在一些地方找到的方法getCollections()

请让我知道,如果你有一个解决方案。

共有3个答案

澹台奇略
2023-03-14

就连我也遇到过类似的情况,我想要一个集合中的文档总数,但firebase既不提供u文档计数,也不提供文档ID,当查询集合时,它会返回包含文档全部内容的文档列表。

李泓
2023-03-14

听起来您想知道是否有一种方法可以在不读取每个文档的情况下获取集合中的所有文档ID。目前这是不可能的。使用Firestore客户端SDK时,您唯一的选择是查询整个集合,这将把每个文档的全部内容传输给客户端。

彭鸿彩
2023-03-14

FirestoregetCollections()方法仅存在于服务器端SDK中,在服务器端SDK中,它作为一个读取操作收费。但正如Doug回答的那样,它返回的是集合ID/名称,而不是文档ID。

要在客户机上获取文档ID,需要阅读整个文档。因此,这将按您读取的文档数收费,并将消耗每个文档中所有数据的带宽。

在服务器上,您可以使用select()方法仅获取文档ID的列表。阅读每一份文档仍将收取费用,但它将消耗更少的带宽。

见:

  • FIRESTER-获取文档集合
  • 如何在一个集合中获取一个文档ID的列表Cloud Fire?
 类似资料:
  • 问题内容: 如果我有一个收藏,例如,我如何拿出第一件?我可以先叫一个,先取一个,然后扔掉。有没有更浪费的方法呢? 问题答案: Iterables.get(yourC,indexYouWant) 因为实际上,如果您使用的是收藏夹,则应该使用Google收藏夹。

  • 我一直在查看Laravel系列的文档和API,但似乎没有找到我想要的: 我想从集合中检索具有模型数据的数组,但只获取指定的属性。 例如,类似于,其中集合实际上包含用户的所有属性,因为它们在其他地方使用,但在这个特定位置,我需要一个包含userdata的数组,并且只包含指定的属性。 在拉雷维尔,似乎没有一个帮手来帮你我怎样才能用最简单的方法做到这一点?

  • 问题内容: 我想从Firebase Firestore数据库获取数据。我有一个名为user的集合,每个用户都有一些相同类型的对象(My Java自定义对象)的集合。我想在创建我的活动时用这些对象填充ArrayList。 在onCreate()中: 调用以获取项目列表的方法: 问题答案: 该操作返回a ,这意味着它是一个 异步操作 。调用仅启动操作,它不等待操作完成,因此您必须添加成功和失败侦听器。

  • 我一直在从firestore的子集合中获取数据。我在下面附上我的代码脚本以供参考。 现在我从特定的子集合中获取数据。使用此查询行 其工作正常,并返回数据。 但我想从组文档中获取所有数据。 下面的链接附上了我的数据库图片。 Firestore数据库映像

  • 我使用的是Vue.js和Firebase FiRecovery。现在我有两个集合和。在订单集合中,我已经存储了集合的每个文档的id。我现在必须从中获取相应用户的详细信息。我应该怎么做?这是我迄今为止所做的 我需要在userInfo中存储用户数据。提前谢谢

  • 问题内容: 它是纠正与Java 8,你需要执行下面的代码确实获得从平行流Collection? 从CollectionAPI: 默认Stream parallelStream() 返回一个可能与此流作为其源的并行Stream。此方法允许返回顺序流。 从BaseStreamAPI: S parallel() 返回并行的等效流。可能由于流已经是并行的,或者因为基础流的状态被修改为并行而返回自身。 我需