是否可以防止删除特定集合下的文件?

Is it possible to prevent the deletion of the documents under specific collection?

我在名为 Users 的集合中有很多帐户,我想防止删除文档(帐户),如何使用安全规则来做到这一点?

此外,我想问一下是否可以防止通过 Firebase Console 删除用户集合中的任何文档?

我不需要删除任何文档,管理员也不需要删除


编辑规则历史记录

//Before pusblish the question
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

//Current
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /USERS/{userId} {
      allow delete: if false;
    }
  }
}

一个write规则可以分解为createupdatedelete。您可以使用这些安全规则防止删除文档:

match /users/{userId} {
  allow delete: if false;
}

查看安全规则文档 granular operations


您无法阻止从 Firebase 控制台删除文档(但最好首先阻止任何未经授权的人访问)。


您之前的安全规则不安全,允许任何人 read/update/delete 任何集合。 updates 规则只规定不允许任何人删除users 集合中的文档,但对于读取操作和其他集合没有条件。您应该如下所示明确定义它们:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /USERS/{userId} {
      allow read: true;
      allow delete: if false;
    }

    match /Transactions/{txnId} {
      allow read, write: if true;
    }
  }
}

以上规则允许任何人读取用户集合但不能删除任何文档和 read/write 交易集合中的任何文档。我建议检查 Get to know Cloud Firestore - Security Rules 并根据您的用例编写安全规则。