【问题标题】:How to start the Firebase Realtime database emulator with open rules?如何使用开放规则启动 Firebase 实时数据库模拟器?
【发布时间】:2021-01-23 03:08:49
【问题描述】:

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

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

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

  • my_remote_project_id
  • 假服务器

当我转到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"

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

【问题讨论】:

  • 嗨@Nico 您是否尝试为模拟器的安全规则使用不同的文件?正如here 解释的那样,您可以通过在firebase.json 中配置它来为模拟器中使用的规则使用不同的文件。
  • @gso_gabriel 非常感谢,我错过了配置部分。随意添加回复,我会将其标记为已接受的答案。
  • 嗨@Nico 很高兴听到它有帮助!我发布了一个答案:)

标签: firebase firebase-realtime-database google-cloud-functions firebase-tools


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 2022-07-19
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2020-01-28
    相关资源
    最近更新 更多