如何使用开放规则启动 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 个数据库:
- 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"
我总是可以从远程项目(开发环境)中删除规则,但这一点也不理想。
为了能够为您的模拟器使用不同的安全规则,您可以使用不同的文件。这样一来,您将拥有一个用于模拟器的文件和一个用于生产环境的文件,因此您不必担心测试。
您可以通过在模拟器的 firebase.json
规则中配置一组不同的规则来实现。您可以找到有关如何操作的更多信息 here。
我使用以下命令启动模拟器:
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"
我总是可以从远程项目(开发环境)中删除规则,但这一点也不理想。
为了能够为您的模拟器使用不同的安全规则,您可以使用不同的文件。这样一来,您将拥有一个用于模拟器的文件和一个用于生产环境的文件,因此您不必担心测试。
您可以通过在模拟器的 firebase.json
规则中配置一组不同的规则来实现。您可以找到有关如何操作的更多信息 here。