【发布时间】:2021-08-23 07:50:01
【问题描述】:
我目前正在开发一个需要与我的 Firestore 配合使用的 Firebase 云功能。我的firebase的结构如下:
chatrooms/{chatID}/{chatID}/anymessage
两个聊天 ID 相同,它们类似于一个单独的聊天室,每个聊天室里面都有任何消息。此外,每个聊天室都有一个“hello”文档,其中有我需要在云功能中使用的关键数据,因为我需要从那里提取一个密钥,以便发送推送通知。
这是我目前正在尝试部署的云功能:
exports.createpushnotification = functions.firestore.document('chatrooms/{chatID}/{chatID}/hello').onUpdate((change, context) => {
const keyofuser1 = change.after.data().partner1pushkey; //key to use for push notification
fetch("https://exp.host/--/api/v2/push/send", {
method:"POST",
headers:{
"Accept": "application/json",
"Content-Type": "application/json"
},
body:JSON.stringify({"to":keyofuser1, "body":"New Message!"})
})
})
基本上我想要一个进入每个聊天室目录的云函数,从那里获取“hello”文件并等待它更新,当它更新时,执行获取操作。不幸的是,我得到了一个错误,即使使用 --debug 我也看不到任何可以帮助我的错误日志:
Functions deploy 出现以下函数错误: createpushnotification(us-central1)
要尝试重新部署这些功能,请运行: firebase deploy --only "functions:createpushnotification"
要继续部署其他功能(例如数据库),请运行: firebase deploy --except 功能 [2021-08-23T07:33:26.669Z] 更新期间出错 项目/*********/locations/us-central1/functions/createpushnotification:
错误:函数未正确部署。
我在这里做错了什么?
【问题讨论】:
-
你没有兑现承诺。尝试在
fetch(...)之前添加return。您还可以分享您的 Firestore 文档的屏幕截图吗?chatrooms/{chatID}/{chatID}/anymessage为什么你有两次chatID? -
“我想要一个云函数,它进入每个聊天室目录,从那里获取“hello”文件”=>您当前的云函数不会这样做。只有当 一个 hello 文档被修改时才会触发。您能否确认您希望 Cloud Function 在执行时读取每个聊天室集合?
-
@Renaud Tarnec 是的。正如你所说,我希望它进入多个位置并收听“hello”文件。
-
@Dharmaraj 我有两次 ChatID,因为我需要以最终有文档的方式构建 Firestore。我是否只使用“一个”ChatID 我会在端点有一个集合而不是文档。
-
@KubaghettothefreshTestobun 我仍然不确定你的确切目标。您想收听任何 hello 文档发生的任何更新,还是想在一次操作中循环遍历所有 hello 文档?
标签: javascript firebase google-cloud-functions firebase-cloud-messaging