首页 > 解决方案 > 在nodejs中的Firebase Functions HTTPS请求中报告错误的正确方法

问题描述

我在 node.js 中实现了一个 Firebase 函数,可以通过浏览器在 HTTPS 上简单地调用(我使用邮递员进行测试):

exports.notifToAdmin = functions.https.onRequest((request, response) => {
  const title = request.query.title
  const body = request.query.body
  const badge = request.query.badge
  if (typeof title === 'undefined') { return response.status(500).send("title missing") }
  if (typeof body === 'undefined') { return response.status(500).send("body missing") }
  if (typeof badge === 'undefined') { return response.status(500).send("badge missing") }
  notifications.sendNotifToAdmin(title, body, badge)
    .then(message => {
      const ackString = fingerPrint(msg);
      return response.send(ackString);
    })
    .catch(error => {
      console.error(error);
      return response.status(500).send(error);
    });
});

标签: node.jsgoogle-cloud-functions

解决方案


我是否使用正确的方式将错误发送回调用者(通过 response.status(500).send("...."))

是的,这是需要发送 HTTP 状态代码的 HTTP 类型函数的标准。但是您应该发送一个 4xx 范围的 HTTP 代码来处理与客户端发送不正确信息有关的错误。

我知道 onRequest 结果应该是一个承诺

onRequest 类型函数绝对没有义务返回一个承诺。该函数只需要在所有 Promise 都解决后发送响应,以便在传递响应时终止函数之前完成异步工作。


推荐阅读