大家好,我是node.js的新手,我想知道我是否打了两次我不知道的电话。我收到一个错误:发送邮件头后无法设置邮件头。
export const hearingReminder = functions.https.onRequest((request, response) => {
console.log(request.body)
const payload = {
notification: {
title: 'Upcoming Hearing',
body: 'You have a hearing in one hour.',
}
};
const fcm = request.body.fcm
console.log(request.body.fcm)
try {
response.status(200).send('Task Completed');
return admin.messaging().sendToDevice(fcm, payload);
} catch (error) {
return response.status(error.code).send(error.message);
}
在admin.messaging().sendToDevice
生成错误的情况下,您的代码试图发送两次响应。与其在呼叫前发送200响应,不如只在呼叫后发送。发送响应应该始终是您职能中执行的最后一件事。
你的代码应该更像这样:
admin.messaging().sendToDevice(fcm, payload)
.then(() => {
response.status(200).send('Task Completed');
})
.catch(error => {
response.status(error.code).send(error.message);
})
请注意,您不需要为HTTP类型的函数返回任何内容。你只需要确保处理所有的承诺,并且只有在所有的承诺都得到解决后才发送响应。