P粉2657249302023-08-25 19:54:35
實際上,如 Firestore JS SDK 文件 中所述,使用行動/網路用戶端程式庫無法檢索集合清單。
這不僅適用於 Firestore 資料庫的根集合,也適用於 Firestore 文件的子集合。
但是,如您在問題中提到的,可以使用 Cloud Firestore Node.js 用戶端 API。因此,您可以使用 Cloud Function 來列出 Firestore 資料庫的集合並從前端呼叫此雲端函數。
由於您將從應用程式中呼叫此雲端函數,因此我們使用可呼叫雲函數 .
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 應用程式呼叫此可呼叫雲函數,只需遵循 Angularfire 雲函數文件。
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 文件的所有子集合。 (免責聲明:我是作者)