Firestore规则覆盖率报告-请求表达式从未评估

时间:2019-12-08 13:06:39

标签: firebase google-cloud-firestore firebase-security

最近,我一直在为新应用程序使用Firebase。由于您可以在Firestore上定义自己的规则,因此我想尝试一下。

要测试这些规则,我正在运行Firestore模拟器。当我尝试授权一些测试用户时,总是会出现超时错误。为了自己解决错误,我进行了一些研究。

我发现可以看到“ Firestore规则覆盖率报告”,并且在其中可以看到:

Error message of Firestore Rule Coverage Report

但是,由于我是Firestore的新手,所以我不知道这是什么,而且经过一番谷歌搜索后,我也没有找到解决该问题的方法。

3 个答案:

答案 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(此值在文件.firebasercgoogle-services.json中可用

因此,如果您的project_idmy-amazing-app,则rulesCoverage网址将是: http://localhost:8080/emulator/v1/projects/my-amazing-app:ruleCoverage.html