【问题标题】:res.json is not sending my error message to the client?res.json 没有向客户端发送我的错误消息?
【发布时间】:2020-06-20 20:38:11
【问题描述】:

我有这个错误处理程序,它可以根据发生的情况检索特定的错误消息。但问题是当我使用 .catch() 运行我的错误处理函数时,如果我登录到节点控制台,它会起作用,但是当我尝试通过 res.json() 将它发送到客户端时,它只会发送状态代码,而不是我的错误处理程序的任何部分。

function errorHandler(error){
  if (error.name === 'SequelizeValidationError') {
    const errors = error.errors.map(err => err.message);
    return errors;
  } else {
    throw error;
  }
}


router.post('/create', async(req, res) => {
     await Movie.create(req.body)
      .then(() => res.json("Movie Created"))
      .catch( err => res.status(401).json(errorHandler(err)) );
  });

这是我的错误处理程序代码和我正在谈论的路线。它在节点控制台中工作,但就像我说的那样,它只将状态 401 代码发送给客户端,没有别的。如何将我的错误消息也发送给客户端?

谢谢!

【问题讨论】:

    标签: javascript node.js api express


    【解决方案1】:

    因为它不等待errorHandler的结果。让他们等着。 试试这个。

    function errorHandler(error, cb){
      if (error.name === 'SequelizeValidationError') {
        const errors = error.errors.map(err => err.message);
         cb(errors);
      } else {
        throw error;
      }
    }
    
    
    router.post('/create', async(req, res) => {
         await Movie.create(req.body)
          .then(() => res.json("Movie Created"))
          .catch( err => {
                  errorHandler(err, function(errors){
                       res.status(401).json(errors);
                   });
          });
      })
    

    或者您可以返回一个 Promise 并在 errorHandler 上等待。

    【讨论】:

    • 我试过了,但还是不行 :( ...我很感谢你能帮助我!!谢谢!
    • 在 res.status(401).json(errors) 之前添加 console.log(errors) 并显示输出
    • ValidationError [SequelizeValidationError]:验证错误:请为“Title”提供一个值,验证错误:请在 C:\Users\jaybo\Desktop\sql-with- 处为“Review”提供一个值orm-node\node_modules\sequelize\lib\instance-validator.js:74:15 at tryCatcher (C:\Users\jaybo\Desktop\sql-with-orm-node\node_modules\bluebird\js\release\util.js :16:23)
    • 它正在将我的错误消息正确地记录到控制台,但是第一行它说提供标题值是我想通过 JSON 发送的。
    • 你在哪里记录这个?你必须调试你的错误处理函数,因为它应该返回一个数组
    猜你喜欢
    • 2018-03-08
    • 2019-01-26
    • 2019-04-29
    • 2015-04-05
    • 2015-04-17
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多