如何使用开放规则启动 Firebase 实时数据库模拟器?

How to start the Firebase Realtime database emulator with open rules?

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

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"

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

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

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