angular firestore 权限不足
angular firestore insufficient permission
在我的 angular 应用程序中使用 firebase 作为数据库,在 module.ts 中使用 angular/fire 将应用程序与 firebase 连接,并且 firebase 环境已完成,登录和注册工作正常,当用户在 firestore 中登录时,数据未获取,在控制台中抛出错误,当 firestore 规则更改以打开其工作正常时,当规则仅限于经过身份验证的用户时不工作。
> Error: core.js:6185 ERROR FirebaseError: Missing or insufficient
> permissions.
> at new e (prebuilt-109c6673-0f51e182.js:188)
> at prebuilt-109c6673-0f51e182.js:10416
> at prebuilt-109c6673-0f51e182.js:10417
> at e.onMessage (prebuilt-109c6673-0f51e182.js:10439)
> at prebuilt-109c6673-0f51e182.js:10356
> at prebuilt-109c6673-0f51e182.js:10387
> at prebuilt-109c6673-0f51e182.js:15194
> at ZoneDelegate.invoke (zone-evergreen.js:364)
> at Zone.run (zone-evergreen.js:123)
> at zone-evergreen.js:857
这是我的 Firestore 规则:
rules_version = '1';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Angular代码:
import {AngularFireAuth} from '@angular/fire/auth'
constructor(private Auth:AngularFireAuth) {}
login(AuthData:AuthData) {
this.Auth.signInWithEmailAndPassword(AuthData.email,AuthData.password)
.then().catch(error => {
this.uiSer.snackBar(error.message,null,3000);
})
}
数据获取代码:对 fetchsendExercise() 的调用是在必需的组件上完成的,所有其他必需的组件都已导入,它们工作正常。
import { AngularFirestore } from "@angular/fire/firestore";
constructor(private db:AngularFirestore){}
fetchsendExercise(){
this.db.collection('exercises').snapshotChanges().pipe(map(docArray=>{
return docArray.map(doc=>{return{
id:doc.payload.doc.id,
name:doc.payload.doc.data().name,
duration:doc.payload.doc.data().duration,
calories:doc.payload.doc.data().calories
}
})
}))
.subscribe((data:Exercise[])=>{this.availableExercise=data
this.fetchExercise.next([...this.availableExercise])
this.ui.exerciseLoading.next(false);
})
}
我找到了我的问题的解决方案,这是最新的 firebase 的错误,回滚到以前的版本后它工作正常,运行 npm i firebase@8.6.1
在我的 angular 应用程序中使用 firebase 作为数据库,在 module.ts 中使用 angular/fire 将应用程序与 firebase 连接,并且 firebase 环境已完成,登录和注册工作正常,当用户在 firestore 中登录时,数据未获取,在控制台中抛出错误,当 firestore 规则更改以打开其工作正常时,当规则仅限于经过身份验证的用户时不工作。
> Error: core.js:6185 ERROR FirebaseError: Missing or insufficient
> permissions.
> at new e (prebuilt-109c6673-0f51e182.js:188)
> at prebuilt-109c6673-0f51e182.js:10416
> at prebuilt-109c6673-0f51e182.js:10417
> at e.onMessage (prebuilt-109c6673-0f51e182.js:10439)
> at prebuilt-109c6673-0f51e182.js:10356
> at prebuilt-109c6673-0f51e182.js:10387
> at prebuilt-109c6673-0f51e182.js:15194
> at ZoneDelegate.invoke (zone-evergreen.js:364)
> at Zone.run (zone-evergreen.js:123)
> at zone-evergreen.js:857
这是我的 Firestore 规则:
rules_version = '1';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Angular代码:
import {AngularFireAuth} from '@angular/fire/auth'
constructor(private Auth:AngularFireAuth) {}
login(AuthData:AuthData) {
this.Auth.signInWithEmailAndPassword(AuthData.email,AuthData.password)
.then().catch(error => {
this.uiSer.snackBar(error.message,null,3000);
})
}
数据获取代码:对 fetchsendExercise() 的调用是在必需的组件上完成的,所有其他必需的组件都已导入,它们工作正常。
import { AngularFirestore } from "@angular/fire/firestore";
constructor(private db:AngularFirestore){}
fetchsendExercise(){
this.db.collection('exercises').snapshotChanges().pipe(map(docArray=>{
return docArray.map(doc=>{return{
id:doc.payload.doc.id,
name:doc.payload.doc.data().name,
duration:doc.payload.doc.data().duration,
calories:doc.payload.doc.data().calories
}
})
}))
.subscribe((data:Exercise[])=>{this.availableExercise=data
this.fetchExercise.next([...this.availableExercise])
this.ui.exerciseLoading.next(false);
})
}
我找到了我的问题的解决方案,这是最新的 firebase 的错误,回滚到以前的版本后它工作正常,运行 npm i firebase@8.6.1