Firebase AngularFire2:错误:缺少权限或权限不足

Firebase AngularFire2:错误:缺少权限或权限不足,firebase,google-cloud-firestore,angularfire2,firebase-security,Firebase,Google Cloud Firestore,Angularfire2,Firebase Security,不确定访问AngularFirestoreCollection时出现此错误的原因: 错误:缺少权限或权限不足 我缺少什么?您已经在应用程序中配置了一个深度路径: Categories --> User --> Categories 并且您的规则仅包含父文件夹,即: /categories/{userId} 您必须更改为: /categories/{userId}/categories/{category} 因此,您可以访问匹配条件的UserId,以及当前路径的效果。 当使用通配

不确定访问AngularFirestoreCollection时出现此错误的原因:

错误:缺少权限或权限不足


我缺少什么?

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

Categories --> User --> Categories
并且您的规则仅包含父文件夹,即:

/categories/{userId}
您必须更改为:

/categories/{userId}/categories/{category}
因此,您可以访问匹配条件的UserId,以及当前路径的效果。 当使用通配符时,以及当使用特定或嵌套的匹配条件时,有许多原因,请查看并选择最适合的实现。

也有同样的问题

如果您确实已登录,请在拨打电话之前进行检查:

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.");
    }
});

从您的代码来看,您似乎试图访问/categories/{userId}/categories,但您的规则仅适用于/categories/{userId}。尝试将其更改为匹配/categories/{categories=**}{。我尝试使用通配符/categories/{userId=**}但是得到了同样的错误。但是使用建议的完整路径有效。我使用的通配符正确吗?我用来存储用户类别的结构正确吗?还是更有效的方法?我不确定你的应用程序的目标是什么,但是如果你需要为每个用户管理一个额外的类别集合,这似乎没问题。
/categories/{userId}/categories/{category}
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.");
    }
});