最近,我一直在为新应用程序使用Firebase。由于您可以在Firestore上定义自己的规则,因此我想尝试一下。
要测试这些规则,我正在运行Firestore模拟器。当我尝试授权一些测试用户时,总是会出现超时错误。为了自己解决错误,我进行了一些研究。
我发现可以看到“ Firestore规则覆盖率报告”,并且在其中可以看到:
但是,由于我是Firestore的新手,所以我不知道这是什么,而且经过一番谷歌搜索后,我也没有找到解决该问题的方法。
答案 0 :(得分:0)
我怀疑问题的根源在于表达式抛出错误。如果用户未通过身份验证,则request.auth将为空(因此request.auth.uid将引发空引用错误)。
答案 1 :(得分:0)
我的问题是我在每次测试前都执行了 loadFirestoreRules
。我将其更改为对所有测试仅运行一次 loadFirestoreRules
,现在它可以正常工作了。
答案 2 :(得分:-1)
Firestore文档有点混乱。他们声明网址应为:
http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html
但是,他们没有说明应将<database_name>
替换为project_id
。 是的...阅读URL可能很明显,但实际上应该使参数名称更明显。此外,在Firestore数据库中,不会创建按名称访问的数据库。
解决方案:
<database_name>
应该替换为您的project_id
(此值在文件.firebaserc
或google-services.json
中可用
因此,如果您的project_id
是my-amazing-app
,则rulesCoverage网址将是:
http://localhost:8080/emulator/v1/projects/my-amazing-app:ruleCoverage.html