【问题标题】:Using functions emulator together with live database将函数模拟器与实时数据库一起使用
【发布时间】:2020-07-01 11:07:08
【问题描述】:

为了方便测试 https 可调用函数,我想以可以评估在线数据库的方式运行函数模拟器。

模拟器的启动方式我认为是这样的:

"GOOGLE_APPLICATION_CREDENTIALS=\"/path/to/credentials.json\" firebase emulators:start --only functions"

现在我仍然需要将我的应用程序中的 firebase 函数配置指向模拟器的主机/端口。

有没有办法做到这一点?

对于firestore,您可以执行以下操作:

  const db = firebaseApp.firestore();

  if (window.location.hostname === "localhost") {
    console.log("localhost detected!");
    db.settings({
      host: "localhost:8080",
      ssl: false
    });
  }

是否有类似的方法来配置 firebase 函数以指向模拟器?

我知道你可以通过 functions-shell 测试函数,但我觉得不是很方便。我想将我的应用与 firestore 中已有的数据一起使用。

【问题讨论】:

    标签: firebase google-cloud-firestore google-cloud-functions firebase-cli


    【解决方案1】:

    这不是受支持的用例。您可以使用云服务或本地模拟器,但不能同时使用两者。您可以尝试使用可以从云中获取的一些数据预先填充模拟器,但仅此而已。 (本地模拟器的目的是完全避免需要云服务。)

    【讨论】:

    • 感谢您解决这个问题。我将采用一种方法,然后为模拟数据库设置数据。
    • 我刚刚发现,如果我像这样运行模拟器:GOOGLE_APPLICATION_CREDENTIALS=\"/path/to/credentials.json\" firebase emulators:start 我能够触发模拟的 http 函数,并且它们可以像部署的函数一样从数据库中读取/写入。您确定它不是受支持的用例吗?我还没有尝试过 pubsub 和后台功能,但我想这也可以。
    • 我的印象是本地模拟器套件是用于离线开发的。如果您遇到其他一些行为,您可能希望将问题发布到项目 GitHub。 github.com/firebase/firebase-tools
    • 啊,我看到我的问题是专门关于 httpsCallable 的 :) 嗯 https 当然有点不同,因为它只是暴露在一个普通的 URL 上并直接调用。但我可以想象,通过允许用户在功能配置中设置主机来支持 httpsCallable 并不是那么努力。
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多