我总是遇到以下错误:
src_app_ddd_module_ts.js:2 ERROR 错误:未捕获(承诺中):错误:您的 AppModule 中尚未提供 AngularFireModule (这可以手动或隐式使用 ProvideFirebaseApp) 或者您在 NgModule 之外调用 AngularFire 方法(不支持)。 错误:您的 AppModule 中尚未提供 AngularFireModule (这可以手动或隐式使用 ProvideFirebaseApp)或者您在 NgModule 之外调用 AngularFire 方法(不支持)。
在app.module.ts中
import { provideFirebaseApp, initializeApp, getApp } from '@angular/fire/app';
import { getFirestore, provideFirestore } from '@angular/fire/firestore';
在
imports: [
provideFirebaseApp(() => initializeApp(environment.firebase)),
provideFirestore(() => getFirestore(getApp()))
...
]
在组件中: 进口:
import { getFirestore, doc, getDoc } from '@angular/fire/firestore'
import { getApp } from '@angular/fire/app';
全局变量
db = getFirestore(getApp());
检索数据:
const docRef = doc(this.db, "docdata", "XdQH3683YpCeGhQ6MqO0"); const docSnap = 等待 getDoc(docRef); 让数据 = docSnap.data(); 控制台.log(数据);
我错过了什么? 检索数据的最佳方式是什么? Firestore 数据库中只有一个字段。
数据库是一个公共数据库,不需要身份验证,我只是为了测试目的而创建的。
提前谢谢您
您确实应该创建一个 firebase.service 或其他东西来处理这些请求,而不是直接在组件中执行它们。但是,您应该能够通过执行以下操作来使其正常工作。
app.module.ts
import { initializeApp, provideFirebaseApp } from '@angular/fire/app';
import { getFirestore, provideFirestore } from '@angular/fire/firestore';
...
imports: [
provideFirebaseApp(() => initializeApp(environment.firebase)),
provideFirestore(() => getFirestore()),
...
]
组件(应该在服务中)
import {Firestore} from '@angular/fire/firestore';
constructor(
private firestore: Firestore
) {
getDoc(doc(this.firestore, 'docdata/XdQH3683YpCeGhQ6MqO0')).then(snapshot => {
console.log(snapshot.data())
});
}
请删除全局变量。这很少是答案,并且可能会让您的代码面临各种其他问题。