【发布时间】:2019-04-12 21:54:48
【问题描述】:
在我的 Firebase -> 数据库 -> 规则编辑器中,我有一门课程的 write 操作匹配规则,用于测试 status 属性是否为:
- 未定义,意味着模型道具中缺少该属性,或者
- 设置,值为“草稿”或“已完成”
为了捕捉到这一点,我写了以下内容:
match /courses/{courseId} {
allow write: if (resource.data.status == 'undefined' ||
resource.data.status != 'completed');
}
也就是说,如果课程没有status 属性,或者属性不等于“已完成”,则允许使用write。
条件的第二部分没有问题,问题是第一部分总是导致典型的ERROR FirebaseError: Missing or enough permissions。
我在第一部分尝试了以下每种口味,但都没有成功:
resource.data.status == null
resource.data.status == undefined
resource.data.status == 'undefined'
typeof(resource.data.status) == undefined
typeof(resource.data.status) == 'undefined'
而且,=== 在编辑器中根本就在语法上无效。知道如何针对缺失的属性进行测试并获得正确的真/假值吗?
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security