要解决Angular和Firestore中的FirebaseError:“缺少或权限不足”,可以通过在观察特定文档时添加idToken来提供适当的权限。以下是一个示例代码片段,演示如何在Angular中实现此操作:
npm install firebase @angular/fire
app.module.ts
文件中,导入Firebase和AngularFire模块,并配置它们:import { AngularFireModule } from '@angular/fire';
import { AngularFireAuthModule } from '@angular/fire/auth';
import { AngularFireAuthGuardModule } from '@angular/fire/auth-guard';
import { AngularFirestoreModule } from '@angular/fire/firestore';
const firebaseConfig = {
// 将您的Firebase配置信息粘贴在这里
};
@NgModule({
imports: [
AngularFireModule.initializeApp(firebaseConfig),
AngularFireAuthModule,
AngularFireAuthGuardModule,
AngularFirestoreModule
],
// ...
})
export class AppModule { }
import { Component } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
@Component({
// ...
})
export class YourComponent {
constructor(private firestore: AngularFirestore) { }
// 添加观察特定文档的方法
observeDocument(): void {
const docRef = this.firestore.collection('your-collection').doc('your-document');
// 获取当前用户的idToken
firebase.auth().currentUser.getIdToken(/* forceRefresh */ true)
.then((idToken) => {
// 通过在观察文档时添加idToken来提供适当的权限
docRef.valueChanges({ idToken })
.subscribe((data) => {
// 处理观察到的文档数据
}, (error) => {
// 处理错误
});
})
.catch((error) => {
// 处理错误
});
}
}
请注意,上述代码假设您已经在Firebase控制台中正确设置了数据库规则和身份验证规则。
通过在观察文档时添加idToken,您将为该操作提供了适当的权限,以解决“缺少或权限不足”的FirebaseError。