我的 GAE 本地服务器如何连接到 firebase 模拟器

How does my GAE local server connect to firebase emulator

我希望从技术上了解 运行 我的围棋服务器 go run main.go 我可以连接到本地的 firestore 模拟器(假设模拟器是 运行ning)

该连接是如何建立的?

询问是因为我一直把它当作 g运行ted 并且昨天它没有工作声称找不到我的 GAE 凭据。

我 运行: gcloud auth application-default login 在我 运行 我的服务器之后,我发现我正在将信息写入我的 PRODUCTION 数据库....

编辑:感谢 Cerise 的回答。

我忘了说我的电脑重新启动了,我丢失了 FIREBASE_EMULATOR_HOST 环境的设置(导出)。因此,它默认为 prod 端点。我不知道我只是“登录”到我的 google auth sdk.. 这导致将凭据用于 prod 数据库.. 再次设置变量后,我连接到模拟器。

如果这发生在其他人身上,我最后在我的代码中添加了一个简单的检查(我已经区分了我是 运行在我的本地机器还是在我的 GAE 服务器中)

if os.Getenv("FIRESTORE_EMULATOR_HOST") == "" { log.Fatalf("FIRESTORE_EMULATOR_HOST not set and attempting to run in dev mode.") }

Go Firestore client 使用由 FIRESTORE_EMULATOR_HOST 环境变量指定的模拟器。

使用gcloud beta emulators firestore start命令启动模拟器。模拟器打印设置 FIRESTORE_EMULATOR_HOST 环境变量的说明。

检查环境变量以确定客户端是否正在使用模拟器:

usingEmulator := os.Getenv("FIRESTORE_EMULATOR_HOST") != “”

有关详细信息,请参阅 the package documentation