Firebase安全规则设置了不允许更新的文档

时间:2019-12-18 14:27:15

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

我目前在Firestore中使用set方法来设置和更新文档。

我有一个实现方法来创建或更新给定文档。我可以很好地创建文档,但是当我更新它时(当已经有一个文档存在时),它给我一个权限错误,但是我已经测试并允许创建和更新if true,我还需要添加其他写规则吗?

await db.collection('theCollection').doc(doc.id).collection('nextCollection').doc("" + currentDate).set({
                        status: status,
                        active: true
                    }, {merge: true});
match /collectionOne/{docOne}/collectionTwo/{docTwo} {
        allow write:  if false;
        allow create: if true; //these are only for testing purposes, it is not usually just true.
        allow update: if true;
        allow read:   if true;
    }

2 个答案:

答案 0 :(得分:2)

您的写入规则将覆盖更新规则,写入规则是这三个操作的通用规则创建更新删除,因此请更新您的数据库规则如下

match /collectionOne/{docOne}/collectionTwo/{docTwo} {
        allow delete:  if false;//if you want to disable deleting
        allow create: if true; //these are only for testing purposes, it is not usually just true.
        allow update: if true;
        allow read:   if true;
    }

答案 1 :(得分:1)

请参阅有关granular operations的文档,该文档说明了如何将readwrite分解为更精细的操作。

实际上,“ write规则可以分为createupdatedelete

在“安全规则”代码中,您混合使用writecreateupdate

您应该执行以下操作:

match /collectionOne/{docOne}/collectionTwo/{docTwo} {
        allow create: if true; //these are only for testing purposes, it is not usually just true.
        allow update: if true;
        allow delete: if ....;
        allow read:   if true;
    }