在Firestore中,我无法创建规则以避免覆盖

时间:2018-04-30 22:58:42

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

我试图避免覆盖,制定规则的最佳方法是什么?

此规则不起作用

service cloud.firestore {
  match /databases/{database}/documents {
    match /audio/{title} {
      allow read;
      allow write: if request.resource.data.id != resource.data.id;
    }
  }
}

我尝试了这条规则但它无效request.resource.id != resource.id;

1 个答案:

答案 0 :(得分:2)

查看Security Rules reference文档。特别是关于allow声明的部分。

  

Cloud Firestore中有三种写入操作:create,   updatedelete。这些对应于set()add()update(),   客户端库中的remove()transaction()方法。为您   方便写操作允许所有这些。

// Writes are divided into create, update, and delete operations
allow create, update, delete: if <condition>;

// This is equivalent to using the write operation
allow write: if <condition>;

在这里,您将看到allow write是所有3种类型突变的便捷捷径。对于您的用例,您需要以下内容:

allow create: if <condition>;
allow update, delete: if false;