typescript - FirebaseError:[code=permission-denied]:权限缺失或不足
问题描述
我在服务中有一个简单的集合引用
firebase.auth().onAuthStateChanged(user => {
if (user) {
this.itineraryCollection = firebase
.firestore()
.collection(`itinerary/${user.uid}/itineraryList`);
}
});
我将此服务称为 OnInit
ngOnInit() {
this.loggedInUser = firebase.auth().currentUser;
this.dataSvc.getItineraries()
.get()
.then( itineraryListSnapshot => {
this.itineraries = [];
itineraryListSnapshot.forEach(snap => {
this.itineraries.push({
id: snap.id,
activities: snap.data().activities,
destination: snap.data().destination,
startDate: snap.data().startDate,
endDate: snap.data().endDate,
tripDetails: snap.data().tripDetails,
userId: snap.data().userId
});
});
});
// this.itineraries = this.dataSvc.getUserItinerary();
console.log('logged in user add itin page', this.itineraries);
}
但是我在页面初始化时不断收到以下错误:
vendor.js:49548 ERROR Error: Uncaught (in promise): FirebaseError: [code=permission-denied]: Missing or insufficient permissions.
FirebaseError: Missing or insufficient permissions.
at new FirestoreError (vendor.js:76086)
at JsonProtoSerializer.push../node_modules/@firebase/firestore/dist/index.cjs.js.JsonProtoSerializer.fromRpcStatus (vendor.js:81385)
at JsonProtoSerializer.push../node_modules/@firebase/firestore/dist/index.cjs.js.JsonProtoSerializer.fromWatchChange (vendor.js:81882)
at PersistentListenStream.push../node_modules/@firebase/firestore/dist/index.cjs.js.PersistentListenStream.onMessage (vendor.js:90087)
at vendor.js:90016
at vendor.js:90056
at vendor.js:83144
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (polyfills.js:2749)
at Object.onInvoke (vendor.js:51123)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (polyfills.js:2748)
at resolvePromise (polyfills.js:3189)
at resolvePromise (polyfills.js:3146)
at polyfills.js:3250
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:2781)
at Object.onInvokeTask (vendor.js:51114)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:2780)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (polyfills.js:2553)
at drainMicroTaskQueue (polyfills.js:2959)
at push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask (polyfills.js:2860)
at ZoneTask.invoke (polyfills.js:2845)
我不确定我在 firebase 中的数据库规则应该是什么,但我尝试了很多不同的规则:
match /itinerary/{userId} {
allow read;
allow write;
}
match /itinerary/{userId}/itineraryList {
allow read;
allow write;
}
任何帮助将不胜感激
解决方案
将此添加到您的数据库规则选项卡:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
推荐阅读
- android - 如何将 React js Web 应用程序转换为 android/ios 应用程序
- python - Subplot2grid 删除图形标题和标签
- python - psycopg2 - UndefinedColumn:关系的列“日期时间”“
“ 不存在 - algorithm - 在不接触阴影正方形的情况下通过网格
- python - 如何从serializer.data Django Rest Framework返回空查询集
- python-3.x - 在嵌套字典中循环
- html - WooCommerce 热收据打印显示 HTML 标签
- reactjs - 在 React 中使用 If 语句
- amazon-web-services - ECS Fargate 在从 SQS 接收消息时如何在可用任务之间分配流量?
- php - 如何覆盖 function.php 中的 WooCommerce 总运费?