我目前在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;
}
答案 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的文档,该文档说明了如何将read
和write
分解为更精细的操作。
实际上,“ write
规则可以分为create
,update
和delete
”
在“安全规则”代码中,您混合使用write
,create
和update
。
您应该执行以下操作:
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;
}