【发布时间】:2020-02-28 14:47:05
【问题描述】:
我需要获取一个字符串数组,其中包含有角度的 firestore 数据库集合的所有名称。我不知道我的解释是否正确,所以我附上了我需要的截图。
我一直在搜索,几乎什么都没找到,只有几篇帖子,但我看不懂。
有人可以帮助我吗?谢谢。
【问题讨论】:
-
在官方文档中我什么也没看到。
标签: angular firebase google-cloud-firestore
我需要获取一个字符串数组,其中包含有角度的 firestore 数据库集合的所有名称。我不知道我的解释是否正确,所以我附上了我需要的截图。
我一直在搜索,几乎什么都没找到,只有几篇帖子,但我看不懂。
有人可以帮助我吗?谢谢。
【问题讨论】:
标签: angular firebase google-cloud-firestore
使用客户端 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();
}
}
【讨论】:
data$,我不是 Angular 的专家,但我认为这只是一个约定,表明这个变量包含一个 Observable。