Firebase 错误 --> 代码=权限被拒绝

时间:2021-02-20 05:26:19

标签: angular firebase

我在服务中有一个简单的集合引用

    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,    
          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.

我不确定我在 firebase 中的数据库规则应该是什么,但我尝试了很多不同的规则:

      match /itinerary/{userId} {
            allow read; 
            allow write;
      }
      
            match /itinerary/{userId}/itineraryList {
            allow read; 
            allow write;
      }

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

您可以按如下方式编辑您的 Firefunction 规则,

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

试试上面的代码,它会对你有帮助。

答案 1 :(得分:0)

Issue in firebase database rules.

You can replace these rules with :-

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if
          request.time < timestamp.date(2021, 4, 26);
    }
  }
}