AngularFire2: ERROR Error: Missing or insufficient permissions

AngularFire2: ERROR Error: Missing or insufficient permissions

不确定为什么我在访问 AngularFirestoreCollection 时收到此错误:

ERROR Error: Missing or insufficient permissions.

this.categories = afs.collection('categories').doc(this.afAuth.auth.currentUser.uid).collection<Category>('categories');

Firestore 数据库规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /categories/{userId}{
      allow read, write: if request.auth.uid == userId;
    }
  }
}

我在这里错过了什么?

您已经在您的应用程序中配置了深度路径:

Categories --> User --> Categories

并且您的规则仅包含父文件夹:

/categories/{userId}

您必须更改为:

/categories/{userId}/categories/{category}

所以你得到了匹配条件的UserId,再加上当前路径的效果。

何时使用通配符以及何时使用特定或嵌套匹配条件的原因有很多,请查看 main docs 并选择最适合的实现。

有同样的问题。

在拨打电话之前检查您是否已经登录:

isSignedIn() {
  this.auth.onAuthStateChanged((user) => {
    if (user) {
    // User is signed in.
    console.log("User is signed in.");

    } else {
      console.log("No user is signed in.");
    }
});