firebase 如何防止Firestore在addDocument过程中自动创建根集合?

6qqygrtg  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(116)

在Firestore中,我有一个集合“form1”
在客户端应用程序中,当我在不存在的集合中创建文档时,请输入“form2”
db.collection("form2").addDocument(data: data)...
我从Firestore控制台看到,“form2”是自动创建来保存新文档的。我希望addDocument()在这种情况下会返回错误。
如何使用安全规则?还是使用其他方法?
以下是我目前的安全规则:

rules_version = '12';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {  // only logged-in user can access
      allow read, write: if request.auth.uid != null;
    }
  }
}

为什么不能跟随?(即使根集合存在权限也不足)

service cloud.firestore {
  match /databases/{database}/documents {
    match /{collection} {
      allow read, write: if false;
    }
    match /{collection}/{document} {
      allow read, write: if exists(/databases/$(database)/documents/$(collection));
    }
  }
}
sqxo8psd

sqxo8psd1#

默认情况下,您可以禁止写入所有文档,然后编写规则以仅允许您决定的文档:

service cloud.firestore {
  match /databases/{database}/documents { 
    match /{document=**} {
      allow read, write: if false;// This disallow write and read for all documents
    }
    match /admin_/** {
  allow read, write: if request.auth.token.admin == true;
}
  }
}

这将不允许写入除admin以外的任何集合或文档

相关问题