【问题标题】:Nodejs Express: how to respond with 400 and error detailsNodejs Express:如何响应 400 和错误详细信息
【发布时间】:2019-09-09 17:43:50
【问题描述】:

我有下面的中间件使用 joi 验证输入,当它发现问题时,它会发回 400 的状态,但我在 chrome 网络选项卡中看不到错误,详细信息。我试过 .send 和 .json

static validateResendEmail = async (req: Request, res: Response, next: NextFunction) => {
    const schema = Joi.object().keys({
      jwtToken: Joi.string().trim().required(),
    });
    const jwtToken = req.body.jwtToken;
    Joi.validate({ jwtToken }, schema, (err, val) => {
      if (!err) {
        req.body = val;
        next();
      } else res.status(400).send(err.details);
    });
  };

【问题讨论】:

  • 你能查看整个 err 对象吗?尝试发送整个 err 对象一次
  • 即使使用res.status(400).send({error: 'err'});,我也没有得到任何回复
  • 试试这个res.status(400).send({ error: errObj });
  • 如果我使用状态 402,我可以看到响应,但由于某种原因,我无法看到 400,我正在发送有效的 json

标签: node.js express joi


【解决方案1】:

您可以像这样获得错误详细信息:

static validateResendEmail = async (req: Request, res: Response, next: NextFunction) => {
    const schema = Joi.object().keys({
        jwtToken: Joi.string().trim().required(),
    });
    const jwtToken = req.body.jwtToken;
    const {
        error
    } = Joi.validate({
        jwtToken
    }, schema);

    if (!error) {
        req.body = val;
        return next();
    }

    const { message, context } = error.details[0];

    res.status(400).send(message);

    // res.json({
    //     message,
    //     status: 'fail',
    //     field: context.key
    // });
};

【讨论】:

    【解决方案2】:
    res.status(400).send({error: err.details});
    

    它需要在 send() 中使用 JSON 格式

    【讨论】:

      【解决方案3】:
        var data = req.body;
      cosnt schema = Joi.object().keys({
      jwtToken: Joi.string().trim().required()
      });
      
      Joi.validate(data, schema, (error, value) => {
      if(error) {
        res.status(400).json({
          "msg": error.message
        });
      }
      

      试试这个!

      【讨论】:

        猜你喜欢
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        • 2018-05-27
        • 2016-12-13
        • 2018-09-30
        • 2022-07-07
        • 1970-01-01
        • 2023-01-19
        相关资源
        最近更新 更多