rhy*_*nic 3 schema firebase-security google-cloud-firestore
我不知道如何在 Firestore 中执行可选属性。它似乎没有包含在文档中,以下对我来说失败了。
service cloud.firestore {
match /databases/{database}/documents {
function maybeString(val) {
return val == null || val is string
}
match /myCollection/{document} {
function mySchema() {
return request.resource.data.name is string
&& maybeString(request.resource.data.optionalProp);
}
allow read: if request.auth != null;
allow create, update: if mySchema();
}
}
}
service cloud.firestore {
match /databases/{database}/documents {
match /myCollection/{document} {
function mySchema() {
return request.resource.data.keys().hasAll(['name'])
&& request.resource.data.name is string
&& request.resource.data.optionalProp is string;
}
allow read: if request.auth != null;
allow create, update: if mySchema();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用第二种解决方案,但您需要检查optionalPropusing的存在'fieldName' in resource.data.keys():
service cloud.firestore {
match /databases/{database}/documents {
match /myCollection/{document} {
function mySchema() {
return request.resource.data.keys().hasAll(['name'])
&& request.resource.data.name is string
&& (
! ('optionalProp' in request.resource.data.keys())
|| request.resource.data.optionalProp is string
);
}
allow read: if request.auth != null;
allow create, update: if mySchema();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1514 次 |
| 最近记录: |