Firestore:尝试添加新的子集合时缺少权限或权限不足

时间:2019-10-16 13:03:45

标签: javascript firebase google-cloud-firestore firebase-security

目前,我有一些基本规则可以访问我的Firestore数据库。规则如下。谁能帮助我了解为什么第二段代码会导致权限错误?我正在尝试将图像添加到尚不存在的子集合中。谢谢

rules_version = '2';
service cloud.firestore {
    match /databases/{database}/documents {
        match /projects/{project} {
            allow read, write: if request.auth.uid != null
        }
        match /users/{userId} {
            allow create
            allow read: if request.auth.uid != null
            allow write: if request.auth.uid == userId
        }
    match /notifications/{notification} {

            allow read: if request.auth.uid != null

        }

    }
}

这是我的应用代码:

await firestore.add(
      {
        collection: "users",
        doc: user.uid,
        subcollections: [{ collection: "photos" }]
      },
      {
        name: imageName,
        url: downloadURL
      }
    );

1 个答案:

答案 0 :(得分:1)

我对“ reduxfirestore”一无所知,但似乎您正在尝试写入用户下的子集合。您的安全规则对子集合中的文档无话可说,因此所有这些查询都将被拒绝。如果您希望能够读写文档,则规则必须匹配其完整路径,如下所示:

match /users/{uid}/photos/{pid} { ... }

在控制台中进行读写操作始终有效,因为它绕过了安全规则。