【问题标题】:How can I parameterize a Firebase API call within a closure?如何在闭包中参数化 Firebase API 调用?
【发布时间】:2020-07-10 18:22:04
【问题描述】:

我正在使用 Firebase 云功能将我的 Firestore 数据库同步到第 3 方数据库。由于我的云函数使用对第 3 方 API 的调用,因此我想将 api 调用参数化为输入,以便在测试时使用依赖注入。我能想到的唯一方法基本上是将云函数放在常规函数中,即:

function foo(apiCall = api) {
  exports.bar = 
      functions.firestore.document(doc_name).onCreate(snapshot => apiCall(snapshot));
  return exports.bar
}
foo();

当我尝试使用 firebase deploy --only functions 进行部署时,我被告知 firebase 在本地源代码中看不到这些功能。

我还尝试过类似无效的方法:

function foo(apiCall = api) {
  return functions.firestore.document(doc_name).onCreate(snapshot => apiCall(snapshot));
}
exports.bar = foo();

当我将exports.bar 放在函数之外时,它可以正常部署。

这是我第一次使用 Firebase,所以我不太熟悉语法等,但我不知道为什么用常规函数包装云函数不起作用 - 有什么建议吗?

【问题讨论】:

    标签: javascript node.js firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

    您尝试做的事情是不可能的。导出必须在 index.js 的顶层静态定义,以便 CLI 可以找到并部署它们。它们不能通过函数动态导出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 2017-06-30
      • 2017-09-10
      • 2021-10-23
      相关资源
      最近更新 更多