此外,鉴于需要多个相关功能,部署GCF解决方案的有效方法是什么? (并且考虑到每个部署步骤相当慢 - 10秒)
这听起来像一个直截了当的问题,但我无法找到一个确切的答案。我已经在SO上阅读了一些相关的答案,但它们并不是很清楚。
此处的Google文档提到导出“一个或多个功能”:https://cloud.google.com/functions/docs/writing/
但是到了部署的时候,CLI命令显然只部署了一个函数,据我所知:gcloud beta functions deploy OneFunctionNameHere
。
我错过了什么?
如果我在一个index.js中有几个相关的函数,我肯定不需要几个慢gcloud beta functions deploy
命令?
(或者我可以这样做,以便为每个人获得独立的报告???)
我猜其中一个可能就是答案,但我真的不确定:
感谢任何有关更好解决方案的智慧。
答案 0 :(得分:2)
您可以在一个部署或单个index.js文件中拥有多个 Firebase云功能。
index.js
const functions = require('firebase-functions')
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)
exports.sendNotification = functions.https.onRequest((req, res) => {
res.end()
})
exports.saveToken = functions.https.onRequest((req, res) => {
res.end()
})
使用POST请求调用函数
https://us-central1-projectname.cloudfunctions.net/saveToken
和
https://us-central1-projectname.cloudfunctions.net/sendNotification
部署运行的功能
npm run deploy
的package.json
{
"name": "functions",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"deploy": "firebase deploy --only functions"
},
"author": "",
"license": "ISC",
"dependencies": {
"firebase-admin": "^5.2.1",
"firebase-functions": "^0.6.3"
}
}
在云功能控制台中,您将它们视为单独的功能。
答案 1 :(得分:2)
我不认为可以使用一个命令为Google云部署多个功能 - 正如各个帖子所提到的那样。为了方便起见,我最终使用了以下命令:
sed -n 's/exports\.\([a-zA-Z0-9\-_#]*\).*/\1/p' index.js | xargs -I {} gcloud beta functions deploy {} --trigger-http
使用时要小心,具体来说,确保sed -n 's/exports\.\([a-zA-Z0-9\-_#]*\).*/\1/p' index.js
的输出只是您要导出的函数的名称。