角度函数功能导致"could not handle the request"错误



我有一个相对简单的Firebase函数,它只需创建一个到API的https请求,然后应该对数据库进行几次写入。然而,即使它成功地完成了API调用(我可以在服务的调试器中看到这一点(,它总是会导致错误:无法处理请求

功能

export const CreateNoonlightAlarm = functions.https.onRequest((request, response) => {
const options = {
host: noonlightURL,
path: "/dispatch/v1/alarms",
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${noonlightToken}`,
},
};
var req = https.request(options, (res) => {
res.on("data", (response) => {
let data = JSON.parse(response);
const docRef = database
.collection("systems")
.doc(request.body.owner_id)
.collection("alarms")
.doc(data.id);
docRef
.set(data, { merge: true })
.catch((error: any) => console.log("docRef:", error));
const referenceRef = database
.collection("alarmsToSystems")
.doc(data.id);
referenceRef
.set({
alarm_id: data.id,
system_id: request.body.owner_id,
})
.catch((error: any) => console.log("referenceRef:", error));
response.send(response);
});
});
req.on("error", (e) => {
response.send(e);
});
req.write(JSON.stringify(request.body));
req.end();
}
);

现在,我已经做了一段时间了。我已经尝试删除res.on("data", (response) => {}块中除了response.send(response);之外的所有内容,但我仍然收到错误。我还看到很多人在Firebase实际更新函数时遇到了问题,并说在运行firebase deploy之前再次运行firebase init,但这对我来说仍然不可行。我还用控制台记录了request.body.owner_iddata.id等内容,以确保它们可读,而且它们确实可读。同一文件中的其他函数在被调用时运行良好,并返回预期返回的内容。

我是否在允许此函数成功运行时遗漏了什么?

因此,经过一个小时的故障排除和逐行挖掘,我实现了一些目标。在同一个函数中,不能将两个事物命名为同一事物。。。。结果从来都不好。

在第1行中,我将OnRequest()中的第二个参数定义为response。在第14行中,我再次将response定义为res.on()中的参数。

因此,当我将第14行的response更改为res,然后每次相应地使用所述变量时,函数开始完全按照预期工作。更新后的代码如下所示。

export const CreateNoonlightAlarm = functions.https.onRequest((request, response) => {
const options = {
host: noonlightURL,
path: "/dispatch/v1/alarms",
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${noonlightToken}`,
},
};
var req = https.request(options, (res) => {
res.on("data", (res) => {
let data = JSON.parse(res);
const docRef = database
.collection("systems")
.doc(request.body.owner_id)
.collection("alarms")
.doc(data.id);
docRef
.set(data, { merge: true })
.catch((error: any) => console.log("docRef:", error));
const referenceRef = database
.collection("alarmsToSystems")
.doc(data.id);
referenceRef
.set({
alarm_id: data.id,
system_id: request.body.owner_id,
})
.catch((error: any) => console.log("referenceRef:", error));
response.send(res);
});
});
req.on("error", (e) => {
response.send(e);
});
req.write(JSON.stringify(request.body));
req.end();
}
);

相关内容

最新更新