当前位置: 首页 > 知识库问答 >
问题:

Firebase云函数:如何更新多个函数使用值

卫才
2023-03-14

我有多个云函数使用一个值,基本上是这样的:

function emailFooter() {
    return `<div>email footer</div>`;
}

exports.sendEmailSuccess = functions.https.onCall(() => {
    const emailContent = 'success content' + emailFooter();
    sendEmail(emailContent) // fake email sender
});

exports.sendEmailFailure = functions.https.onCall(() => {
    const emailContent = 'failure content' + emailFooter();
    sendEmail(emailContent) // fake email sender
});

问题是我想要更改页脚内容(由emailfooter返回),但为了这样做(就我所研究的),我首先必须在代码中更改它,然后部署使用emailfooter的每个云函数(sendeMailsuccesssendeMailfaille),这样页脚在每种类型的电子邮件上看起来都是一样的。

当然,我可以使用Firebase deploy-only functions同时部署所有函数,但是我们曾经是多个开发人员,我们中的一些人将函数更新到我们不知道index.js中哪些函数与GCP中的相同(大约20个函数),我必须检查每一个函数,这样我就不会部署旧版本。

有没有一种方法可以更新这个单一的值或者至少知道哪些函数是最新的?

多谢了。

共有1个答案

田佐
2023-03-14

如果单个值只能由代码提供,那么在不重新部署每个函数的情况下就无法更新该值。函数实例之间不共享代码--每个实例都有自己的副本。

如果希望在函数之间共享一个值,并且该值可能会随着时间的推移而改变,则需要将该值放在其他地方,例如数据库。然后,每个函数都可以查询该值的其他源,即使在它更改之后也是如此。

 类似资料:
  • 我想为Firebase创建多个云功能,并从一个项目中同时部署它们。我还想将每个函数分离到一个单独的文件中。当前,如果将它们都放在index.js中,我可以创建多个函数,例如: 但是,我想把foo和bar放在单独的文件中。我试过这个: foo.js在哪里 而bar.js是 有没有一种方法可以在不将所有函数放入index.js中的情况下实现这一点?

  • 在以前的GCP项目中,我们部署了基于Python的云功能(使用gcloud cli),理想情况下,我们希望继续使用Python实现Firebase云功能。所以我的问题是: > 是否可以部署基于Python的Firebase云功能?如果没有: 我们是否可以回到使用gcloud cli部署基于Python的GCP云函数,并且仍然让它们作为Firestore触发器工作?

  • 我正在使用 节点14 FireBase-Functions-Test:0.2.3 FireBase-Admin:9.6.0 FireBase-函数:3.13.2 FireBase工具:9.8.0 所以我想使用firebase云函数对我的firestore触发器函数执行单元测试,我从这里的文档中阅读了步骤。 我想使用执行单元测试。所以我假设我将在脱机模式下初始化SDK。文件上说 如果您希望编写完全脱

  • 在我正在开发的Firebase web应用程序中,我想从邮件地址获取用户ID。为此,我正在尝试编写一个云函数。但它不起作用,或者我没有正确使用它。以下是当前代码(基于我在网上找到的一些示例): 运行“firebase deploy”时,我看不到任何问题。然后,我尝试用各种方法测试该功能,就像我在本教程之后编写的演示应用程序一样。 例如(现有和不存在的邮件地址): 但在任何一种情况下,我都不会在We

  • 我搜索并尝试了我能找到的一切,但无法解决这个问题,我甚至试图使用简单的更新文档,但我得到同样的错误。 编辑只有在所有操作都可以成功执行的情况下,才希望批处理执行时应该做什么。示例:如果我对确实存在的文档进行了前两次更新,它们将按-1更新这些值,然后对不存在的文档进行两次删除操作,这不会导致我的函数出错(值将按-1更新,删除不会执行任何操作) 但是,如果我首先对不存在的文档进行两次删除操作,整个函数

  • 我在Firebase项目中使用多个数据库。主(默认)数据库的云函数工作得很好,但是,我不能让它们用于辅助数据库。例如,我想在具有管理员权限的节点上发出读取请求: 这在主数据库中有效,但是,如果我想在另一个数据库上执行该命令,则不起作用: 虽然已经部署了这些功能,但是当我试图执行云功能时,控制台上出现了一个错误。 以下是带有https触发器的云函数的代码: 下面是Firebase控制台中的错误日志: