问题标签 [google-cloud-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firebase - 无法在 Cloud Functions for Firebase 中获取根 ref
还有另一种获取根引用的方法吗?
node.js - 用于 Firebase 性能的 Cloud Functions
我正在使用 Cloud Functions for Firebase 来:
- 从 api.ai 接收参数
- 调用第三方 API 并
- 回复 api.ai。
我对第三方 API 的调用使用了请求 Node.js 模块,并且包装getInfoFromApi()
在 index.js 中的函数 ( ) 中。
我遇到的问题是辅助函数调用的执行始终需要 15-20 秒。注意:云函数本身在 400 毫秒范围内始终如一地完成其执行。
通过将简单的注释记录到控制台,我可以看到函数何时启动、何时调用辅助函数以及何时收到第三方的响应,所以我想我可以看到发生了什么。
大致来说,时间安排是这样的:
- 0:云函数初始化
- 400 毫秒:云功能完成
- 16 秒:
getInfoFromApi()
函数被调用 (!) - 17s:第三方API返回结果
我的问题:
- 调用辅助函数的延迟是否有明显的原因?这似乎不是由冷启动问题引起的,因为云功能迅速恢复活力,即使在重复调用后延迟也是一致的。
- 使用“请求”节点模块是否会导致问题?是否有更好的模块来创建/管理来自云功能的 http 请求?
您可以在此处查看 index.js 的简化要点:https ://gist.github.com/anonymous/7e00420cf2623b33b80d88880be04f65
这是 Firebase 控制台的截图,显示了示例时间。注意:输出与上面的代码略有不同,因为我简化了上面的代码以帮助理解。
javascript - Firebase 的云函数:枚举 DataSnapshot 属性
我想在我的 Firebase 函数中迭代 DataSnapshot 属性。这是我的代码。
它似乎不可memberIds
枚举,因为我收到错误:
memberIds.forEach 不是函数。
firebase - 从 firebase 功能部署到 firebase 托管
是否可以将静态资产从 firebase 功能部署到 firebase 托管?
用例:包含静态 html 文件的博客。博客内容和元信息将存储在数据库中(内容为降价)。在发布或更新时,会触发一个 firebase 函数,该函数会解析 markdown 并为博客文章生成一个静态 html 文件并将其部署到 firebase 托管。部署后,该函数会将实时 URL 存储在数据库中。
这种工作流程可行吗?在当前文档中,我找不到任何关于 deploy from functions 的信息。
作为一种解决方法,我可以想象一个带有 travis-ci 的设置。该函数在 travis 上触发重建,travis 构建静态资产并将它们部署到 firebase 托管,但这似乎是一个巨大的开销。
我也可以从数据库中提取降价内容并在客户端上构建,但出于初始加载时间的原因,我真的很想尝试静态文件方法。
javascript - How can I get the raw request body in a Google Cloud Function?
I need the raw request body to be able to SHA-1 digest it to validate the Facebook webhook X-Hub-Signature header that's passed along with the request to my Firebase Function (running on Google Cloud Functions).
The problem is that in cases like this (with a Content-Type: application/json
header) GCF automatically parses the body using bodyParser.json()
which consumes the data from the stream (meaning it cannot be consumed again down the Express middleware chain) and only provides the parsed javascript object as req.body
. The raw request buffer is discarded.
I have tried to provide an Express app to functions.https.onRequest()
, but that seems to be run as a child app or something with the request body already being parsed, just like when you pass a plain request-response callback to onRequest()
.
Is there any way to disable GCF from parsing the body for me? Or could I somehow specify my own verify
callback to bodyParser.json()
? Or is there some other way?
PS: I first contacted Firebase support about this a week ago, but for lack of a response there I'm trying it here now.
firebase - 使用 createCustomToken 生成自定义身份验证令牌时,firebase 函数中的 FirebaseAuthError
我正在尝试将我的自定义身份验证代码从firebase-queue
工作人员移动到 firebase 功能。当我尝试调用该createCustomToken
方法时出现以下错误。
下面是我用来创建自定义令牌的代码
下面是 Firebase Functions 仪表板上的错误
类似的功能目前在firebase-queue
工作人员实现中有效,但我按照文档中的建议使用服务帐户初始化应用程序。我猜问题出在initializeApp
调用上,但这就是 Firebase Functions 文档中建议的方式。
node.js - 从使用 Cloud Functions for Firebase 上传的文件中获取下载 URL
使用 Firebase 功能在 Firebase 存储中上传文件后,我想获取文件的下载 url。
我有这个 :
目标文件有很多参数。甚至一个名为mediaLink
. 但是,如果我尝试访问此链接,则会收到此错误:
匿名用户没有 storage.objects.get 访问对象...
有人可以告诉我如何获取公共下载网址吗?
谢谢
node.js - 仅允许对 Cloud Functions for Firebase 的写入权限
我们如何通过仅允许 Cloud Functions for Firebase 将数据写入某些位置的规则来保护数据库,以前有一个选项可以将 uid 添加到管理客户端并在规则部分使用该 uid,但现在我们databaseAuthVariableOverride
通过初始化admin.initializeApp(functions.config().firebase);
不确定如何添加其他参数。
编辑 为此使用证书启动是个好主意吗?IE
上面有什么好处admin.initializeApp(functions.config().firebase)
以及实际从哪里functions.config()
获取数据,这不只是一个节点模块吗?
firebase - 为 Firebase 组织云函数
组织所有 Cloud Functions for Firebase 的最佳做法是什么?
我从示例 GitHub 存储库中看到,所有函数都驻留在一个index.js
文件中。
我猜对于更大的项目,有更好的方法可以在不同的文件/目录中组织 Cloud Functions for Firebase。
google-cloud-functions - 将敏感信息传递给云功能
是否有将敏感信息(例如 API 密钥)传递给 Google Cloud Functions 的“官方”解决方案?特别是最好避免将此信息作为参数传递给函数,因为每次调用都是相同的。AWS Lambda 有一个使用加密环境变量的内置解决方案。Google Cloud Functions 是否有类似的方法?
我可以想象为此使用云存储桶或云数据存储,但这感觉非常手动。