通过`Firebase`和`gCloud`启动FireStore模拟器有什么区别?

问题描述

通过:

启动FireStore模拟器有什么不同
firebase emulators:start --only firestore

和:

gcloud beta emulators firestore start

这两个选项都允许我的Python应用程序实现与数据库的连接,如下所示:

import google
from google.cloud import firestore

os.environ["FIRESTORE_EMULATOR_HOST"] = "localhost:8081"
os.environ["FIRESTORE_EMULATOR_HOST_PATH"] = "localhost:8081/firestore"
os.environ["FIRESTORE_HOST"] = "http://localhost:8081"

credentials = mock.Mock(spec=google.auth.credentials.Credentials)
client = firestore.Client(credentials=credentials)

我自己注意到的一个区别是,firebase似乎尊重我的firebase.json,特别是像这样指定的主机端口:

{
  "emulators": {
    "firestore": {
      "port": "8081"
    }
  }
}
另一方面,gcloud忽略firebase.json,而是选择一个随机端口,除非我显式地通过--host-port传递端口。这是两者之间更大差异的一部分吗?还有哪些其他差异?


解决方案

我一直在查找这两个工具的文档,它们所做的几乎是相同的事情。

使用Firebase tool可以启动多个Firebase产品的仿真器,而gcloud command允许您启动GCP仿真器。FiRestore只是它们共同拥有的产品,因此它们的实用程序应该相同或相似。

关于功能差异,firebase提供了允许您在模拟会话之间保存和恢复数据的--import--export-on-exit标志。它还提供了可视化security rules如何处理当前查询的方法。

除了这些功能之外,我还要注意设置端口和规则文件的不同方法:

  • firebase emulators使用firebase.json文件。
  • gcloud beta emulators使用标志--host-port--rules来实现相同的功能。
请注意,GCP上的Firestore emulator位于beta stage上,因此它的官方支持可能有限,可能会发生变化。还请注意,在GCP's Firestore documentation上,如何使用Firebase CLI而不是gCloud。

最后,您应该使用您首选的工具,因为它们都朝着模拟FiRestore的相同目标工作。如果您已经在使用Firebase CLI,我建议您继续使用它;如果您正在使用gcloud,请使用它。

相关文章