實際上,如 Firestore JS SDK 文件 中所述,使用行動/網(wǎng)路用戶端程式庫無法檢索集合清單。
這不僅適用於 Firestore 資料庫的根集合,也適用於 Firestore 文件的子集合。
但是,如您在問題中提到的,可以使用 Cloud Firestore Node.js 用戶端 API。因此,您可以使用 Cloud Function 來列出 Firestore 資料庫的集合並從前端呼叫此雲(yún)端函數(shù)。
由於您將從應(yīng)用程式中呼叫此雲(yún)端函數(shù),因此我們使用可呼叫雲(yún)函數(shù) .
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 }; });
要從 Angular 應(yīng)用程式呼叫此可呼叫雲(yún)函數(shù),只需遵循 Angularfire 雲(yún)函數(shù)文件。
import { Component } from '@angular/core'; import { AngularFireFunctions } from '@angular/fire/functions'; @Component({ selector: 'app-root', template: `{ data$ | async }` }) export class AppComponent { constructor(private fns: AngularFireFunctions) { const callable = fns.httpsCallable('getCollections'); this.data$ = callable({ .... }); } }
請注意,此方法的靈感來自以下文章,介紹如何使用 JS SDK 列出 Cloud Firestore 文件的所有子集合。 (免責(zé)聲明:我是作者)