【发布时间】:2019-09-21 04:21:32
【问题描述】:
match /UserProfile {
match /{uId}{
allow get: if isUserLoggedIn() && !isUserBlocked(uId);
}
当我尝试使用上述安全规则从 UserProfile/{uId} 获取数据时,它会在 Firestore 中引发以下错误,并且在代码中显示权限不足:
Error running simulation — Error: simulator.rules line [199], column [28]. Function not found error: Name: [get].
现在上面两个函数的定义在这里
function isUserLoggedIn(){
return request.auth != null;
}
function isUserBlocked(uId){
return (('blocked' in get(/databases/$(database)/documents/UserSettings/$(uId)).data) && (request.auth.uid in get(/databases/$(database)/documents/UserSettings/$(uId)).data.blocked));
}
第一个函数运行得很好 但第二个没有
它会抛出该错误
据我所知,该功能还可以
请帮助我在这个棘手的问题上浪费了很多时间
我尝试过的
- 我在其中一个线程中读到这是一个临时问题 但事实并非如此。现在已经超过 48 小时了
- 在某处还提到,这只是模拟器中的一个错误,但代码将运行顺利,即使情况并非如此。在代码中,错误是我所期望的权限不足
- 我已经正确阅读了文档,所以我的代码没问题已经在其他规则中测试了 get 方法并且它工作正常
就是这样,请帮忙
【问题讨论】:
-
您是否为此提交了错误?我在我的环境中看到了同样的事情,而不仅仅是在模拟器中。使用了几个月的规则现在突然失效了。
-
@HondaGuy firebase 开发人员已经知道这一点。查看接受答案的 cmets,Doug Stevenson himslef [他为 firebase 工作] 说开发人员知道这一点
标签: firebase google-cloud-firestore firebase-security