Chr*_*now 8 firebase firebase-security google-cloud-firestore
我刚刚开始了解 Firestore 规则,而且我的头脑正在迅速扩大。
我正在尝试研究如何将规则应用于一个集合,并将另一条规则应用于所有其他集合及其子集合。
所以我从 Firestore 似乎附带的默认规则开始:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将允许对所有集合及其文档进行读写访问。
但是假设我想对一个集合中的文档应用规则并保留所有其他集合的默认规则。以下将不起作用:
service cloud.firestore {
match /databases/{database}/documents {
match /suppliers/{supplier} {
allow create: if !exists(/databases/$(database)/documents/supplierABNs/1260)
}
match /{document=**} {
allow read, write;
}
}
}
Run Code Online (Sandbox Code Playgroud)
因为第二条规则将覆盖第一条规则。
有没有办法做我想做的事?
Rah*_*ram -2
service cloud.firestore {
match /databases/{database}/documents {
match /suppliers/{supplier} {
allow create: if isValidSupplier()
}
function isValidSupplier() {
return resource.data.supplierABNs == '1260'
}
match /{document=**} {
allow read, write;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Resource.data 包含现有文档中的值。
| 归档时间: |
|
| 查看次数: |
2945 次 |
| 最近记录: |