1

我有下面的中间件使用 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);
    });
  };
4

3 回答 3

0

您可以获得如下错误详细信息:

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
    // });
};
于 2019-09-09T07:27:14.427 回答
0
res.status(400).send({error: err.details});

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

于 2019-09-09T07:29:11.920 回答
-1
  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
  });
}

尝试这个!

于 2019-09-09T09:43:50.840 回答