gpt4 book ai didi

javascript - 试图列出 Firestore 数据库的集合

转载 作者:行者123 更新时间:2023-12-03 23:35:31 24 4
gpt4 key购买 nike

我想列出 Ionic4 应用程序中的 Firestore 数据库集合,所以我使用 doc在 listCollection 部分中,因此我在代码中应用了示例代码:

this.afs.firestore.listCollections().then(collections => {
for (let collection of collections) {
console.log(`Found collection with id: ${collection.id}`);
}
});

这是我的构造函数:
  constructor(private router: Router,
private afs: AngularFirestore,
private fireauth: AngularFireAuth) { }

我收到此错误:错误 TS2339:“Firestore”类型上不存在属性“listCollections”。

我不能使用属性 listCollections 而它在在线文档中......

最佳答案

实际上,如 Firestore JS SDK documentation 中所述, 使用移动/Web 客户端库无法检索集合列表 .

这适用于 Firestore 数据库的根集合,也适用于 Firestore 文档的子集合。

但是,正如您在问题中提到的,它 可以使用 Cloud Firestore Node.js Client API .因此,您可以使用云函数来 list the collections您的 Firestore DB 并从您的前端调用此 Cloud Function。

由于您将从您的应用程序中调用此云函数,因此我们使用 Callable 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 };

});

前端代码

要从您的 Angular 应用程序调用这个可调用的云函数,只需按照 Angularfire documentation对于云函数。
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({ .... });
}
}

请注意,此方法的灵感来自以下 article ,其中描述了如何使用 JS SDK 列出 Cloud Firestore 文档的所有子集合。 (免责声明:我是作者)

关于javascript - 试图列出 Firestore 数据库的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58993098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com