【问题标题】:How to list Firestore collections [duplicate]如何列出 Firestore 集合 [重复]
【发布时间】:2020-02-28 14:47:05
【问题描述】:

我需要获取一个字符串数组,其中包含有角度的 firestore 数据库集合的所有名称。我不知道我的解释是否正确,所以我附上了我需要的截图。

我一直在搜索,几乎什么都没找到,只有几篇帖子,但我看不懂。

有人可以帮助我吗?谢谢。

【问题讨论】:

标签: angular firebase google-cloud-firestore


【解决方案1】:

使用客户端 SDK(JavaScript、Android 和 iOS),在撰写本文时,您无法列出 Firestore 数据库的集合,也无法列出给定文档的子集合。

以下article 中描述了一些可能的解决方法,其中涵盖了文档的子集合,但请注意,该方法与 Firestore 数据库的“根”集合完全相同(免责声明,我是作者).

最有趣的是使用 Callable Cloud Function,因为使用 Admin SDK,您可以列出(子)集合(在本例中为 Cloud Firestore Node.js Client API)。

Cloud Function 代码很简单:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

exports.getCollections = functions.https.onCall(async (data, context) => {

    const collections = await admin.firestore().listCollections();
    const collectionIds = collections.map(col => col.id);

    return { collections: collectionIds };

});

您可以使用AngularFireFunctions 从角度调用它,如下所示:

export class AppComponent {
  constructor(private fns: AngularFireFunctions) { 
    const callable = fns.httpsCallable('getCollections');
    this.data$ = callable();
  }
}

【讨论】:

  • 谢谢,但我已经在另一个问题中阅读了该答案,但我不明白。
  • 您不明白哪一部分?确实,它结合了不同的技术,如果你不习惯结合这些不同的技术,初读可能很难理解(简而言之,从前端调用读取 Firestore 的 Cloud Function)
  • 我什么都不懂。我把第一个代码放在哪里?,在第二个代码中,我不明白最后一行,this.data$ = callable();什么是“数据”$?
  • 第一个代码是一个云函数。我建议您查看"get started" documentationvideo series。对于第二部分,我建议您深入了解angularfire 的文档。对于data$,我不是 Angular 的专家,但我认为这只是一个约定,表明这个变量包含一个 Observable。
  • 谢谢你,我设法在firebase中创建了这个函数,但我不知道该怎么称呼它。 Callable 要求输入参数。
猜你喜欢
  • 1970-01-01
  • 2018-11-26
  • 2018-03-17
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多