【问题标题】:How do I grab a count of all the documents in a firebase collelction in angular?如何以角度获取firebase集合中所有文档的计数?
【发布时间】:2020-05-31 12:21:05
【问题描述】:

我有代码可以抓取集合中的文档,但它似乎一次只能抓取 15 个(据我所知),我试图使用这个列表来确定集合中的文档总数对于我正在创建的程序。我需要从一开始就知道指定集合中有多少文档。

这是代码的开头,很明显 var 将注册的限制是 15,然后我永远无法得到准确的数字。

getStatistics(): void{
    const visitArray = this.afs.collection("visits").snapshotChanges();

    //console.log([this.afs.collectionGroup("visits")].length);
    this.k = 0;
    for (let val of visitArray.toString()){
        this.k += 1;
        console.log(this.k);
    }
}

有没有办法从一开始就获得集合的“长度”?我必须从一开始就知道文档中的文档数量。

我也尝试使用 .get() 命令,它从集合中返回相同的初始文档数 (15)。

【问题讨论】:

  • 我不明白您实际上要计算什么,答案并没有为我弄清楚。 API 不提供对嵌套在文档下的子集合进行计数的方法。您的答案是计算 Firestore 集合以外的其他内容,也许是文档字段的数量?集合是文档的容器,文档是字段的容器。
  • 抱歉,我混淆了我的代码实际执行的过程。我有一个集合,其中包含带有 ID 的文档,以帮助引用其他集合。当我实际上应该引用集合中的文档时,我正在谈论数据库拥有的最高级别的集合。所以,虽然我在技术上可以正确地使用原始措辞,但我实际上试图做的事情并不正确。

标签: angular typescript firebase google-cloud-firestore


【解决方案1】:

您只需要订阅集合内容的初始拉取,然后获取该变量的长度。所以对我来说,我做到了:

const visitArray = this.afs.collection("visits").snapshotChanges();

    visitArray.subscribe(payload => {
        this.totalVisitCount = payload.length;
    });

然后将指定集合中的文档数存储在totalVisitCount中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 2021-07-01
    • 1970-01-01
    • 2021-05-09
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    相关资源
    最近更新 更多