javascript - 从 .catch(error) 返回未在 Node/Express 中返回

标签 javascript node.js rest express

我正在编写 REST API 并尝试正确处理任何错误。

当API调用成功时,成功对象将返回给调用函数,并将响应发送给客户端。但是如果发生错误,我想将错误返回给调用函数,以便我可以向客户端发送错误消息。

router.delete('/project', (req, res) => {
  return DeleteProject(userId, projectId)
    .then((response) => {
      //handle response
    });
});

DeleteProject: (userId, projectId) => {
  return deleteProject(userId, projectId)
    .then((response) => { 
      return response
    })
    .catch((error) => {
      console.log('Error in DeleteProject:', error) // This happens.
      return error; // this doesn't happen.
    })
},

function deleteProject(userId, projectId) {
  return Project.deleteOne( ... delete the project... )
    .then((response) => {
      return response
    })
    .catch((error) => {
      return error
    })
}

上面中间函数DeleteProject()中的.catch(error)在发生错误时被触发(即控制台日志发生),但返回并不会返回到路由器。

如何返回错误以供路由器处理?

最佳答案

您可以简单地从其他两个函数中删除 catch 方法,并将 catch 函数放入路由器本身中。然后错误本身将传播到您的路由器功能

router.delete('/project', (req, res) => {
  return DeleteProject(userId, projectId)
    .then((response) => {
      //handle response
    }).catch(() => {
       // Add catch function here. Any error in "DeleteProject" and "deleteProject" will propagate to here
    })
});

DeleteProject: (userId, projectId) => {
  return deleteProject(userId, projectId)
    .then((response) => { 
      return response
    });
    // Remove catch function
},

function deleteProject(userId, projectId) {
  return Project.deleteOne( ... delete the project... )
    .then((response) => {
      return response
    });
    // Remove catch function
}

关于javascript - 从 .catch(error) 返回未在 Node/Express 中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47108110/

相关文章:

javascript - 这种模式是否会导致闭包中的循环引用?

php - 在 php 中使用自定义标签显示图像或视频

javascript - 在可读事件监听器回调中读取时,Node 的 process.stdin 可读流记录 Null

node.js - 将 Node 模块的本地修改部署到 Cloud Functions for Firebase

c# - 客户端 GET 请求没有返回任何内容?

javascript - 在文本字段后插入节点(表单)

javascript - 如何在 firebase 上获取当前用户

node.js - React应用程序中的操作响应状态代码

c# - 使用 wcf Restful 服务通过 WebRequest 的原始正文发送和接收数据?

web-services - 设计用于调用流程方法的 RESTful API