首页 > 解决方案 > 如何使用开放规则启动 Firebase 实时数据库模拟器?

问题描述

我使用以下命令启动模拟器:

firebase emulators:start --project my_remote_project_id --only database,functions --inspect-functions

当我转到语言环境控制台 (http://localhost:4001/database) 时,我可以看到 2 个数据库:

当我转到 时http://localhost:9000/.inspect/coverage?ns=my_remote_project_id,我可以看到规则是我的远程项目的规则。当我去 时http://localhost:9000/.inspect/coverage?ns=fake-server,规则是开放的:

{
    "rules": {
        ".read": true,
        ".write": true
    }
}

由于my_remote_project_id数据库的规则,我无法导入要测试的 json。我可以在fake-server数据库上做到这一点。问题是云功能只在my_remote_project_id一个上触发,而从不在fake-server一个上触发。

我错过了什么吗?

我使用admin.initializeApp()并导出启动应用程序export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

我总是可以从远程项目(开发环境)中删除规则,但这一点都不理想。

标签: firebasefirebase-realtime-databasegoogle-cloud-functionsfirebase-tools

解决方案


为了能够为您的模拟器使用不同的安全规则,您可以使用不同的文件。这样,您将拥有一个用于模拟器的文件和一个用于生产的文件,因此您不必担心测试。

您可以通过firebase.json在模拟器的规则中配置一组不同的规则来实现。您可以在此处找到有关如何操作的更多信息。


推荐阅读