Node.js 在节点JS中的Firebase函数HTTPS请求中报告错误的正确方法

Node.js 在节点JS中的Firebase函数HTTPS请求中报告错误的正确方法,node.js,google-cloud-functions,Node.js,Google Cloud Functions,我在node.js中实现了一个Firebase函数,可以通过浏览器(我使用postman进行测试)在HTTPS上直接调用: exports.notifToAdmin = functions.https.onRequest((request, response) => { const title = request.query.title const body = request.query.body const badge = request.query.badge if

我在node.js中实现了一个Firebase函数,可以通过浏览器(我使用postman进行测试)在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);
    });
});
  • 我是否使用了正确的方法将错误发送回调用方(通过
    response.status(500).send(“…”)
    )?在中,我看到了
    抛出新错误(…)
    的用法。所以我不确定我所做的是否是最理想的方式?我确实注意到文档说,
    //如果未捕获,将导致冷启动(链接到此抛出错误),我不想重新启动任何东西,只需向调用方报告错误

  • 我知道onRequest结果应该是一个承诺,如果我更改代码并在
    通知前面放置
    返回值
    。SendNotifToAdmin(…)
    (这返回一个承诺),那么这与
    返回响应。send(…)
    (这将如何加在一起?)?那么,这也是一种回报吗

我是否使用正确的方法将错误发送回调用方(通过response.status(500.send)(“…”))

是的,这是需要发送HTTP状态代码的HTTP类型函数的标准。但是,对于与发送错误信息的客户端相关的错误,您应该发送4xx范围的HTTP代码

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

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

我是否使用正确的方法将错误发送回调用方(通过response.status(500.send)(“…”))

是的,这是需要发送HTTP状态代码的HTTP类型函数的标准。但是,对于与发送错误信息的客户端相关的错误,您应该发送4xx范围的HTTP代码

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

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