我的firestore数据库上有一条读取规则,如下所示:
match /messages/{document=**} {
allow read: if (resource.data.account_id == request.auth.uid
&& resource.data.keys().hasAll(['is_note']))
|| request.auth.token.role.FirebaseAdminIssuer == true;
}
我认为这应该会向用户返回account_id字段与其uid匹配的所有文档以及文档中包含名为is_note的字段的位置。
如果我有第一条规则:
match /messages/{document=**} {
allow read: if resource.data.account_id == request.auth.uid
|| request.auth.token.role.FirebaseAdminIssuer == true;
}
这准确地为我提供了account_id字段与用户uid匹配的文档。
但是,当我手动将一个名为is_note的布尔字段添加到某些(并非所有)文档并将规则设置为限制为也包含该文档的文档时,我得到Error: Missing or insufficient permissions.
我的规则有问题吗?
仅供参考我使用此处的文档来确定要使用的规则:https://cloud.google.com/firestore/docs/reference/security/#firestore-resource