【问题标题】:NodeJS, Joi Validation - Abort execution upon failed validationNodeJS,Joi 验证 - 验证失败时中止执行
【发布时间】:2018-09-25 16:55:19
【问题描述】:

我有以下代码:

const schema = Joi.object().keys({
            zip: Joi.number().min(1).max(9999999).required().label("Just an example error code, avoid the zip code validation method (0-9999999)."),
        });

        Joi.validate({ zip: req.body.zip }, schema, function (err, value) {
            if (!(err === null)){
                res.status(400).send(err['details']['0']['context']['label']);
            }
        });

即使我成功调用了错误消息,并在 HTTP 标头中将其发送回给我(错误 400),执行也不会停止并且会继续运行。 我认为发生这种情况是因为它已经跳到执行的其他部分,甚至没有到达它返回标头错误消息的部分。

我该如何避免呢?我避免它的唯一方法是使用带有回调/承诺/异步、等待的 Joi 依赖项吗?

如果不是,我怎样才能以最好的方式使用 Promises 实现 Joi 依赖?

谢谢。

【问题讨论】:

    标签: node.js error-handling header send joi


    【解决方案1】:

    发现问题:
    使用以下方式发回响应时:
    res.status(400).send(err['details']['0']['context']['label']);

    我意识到我没有使用 return 语句来使其“最终”。添加它解决了问题,如下:

    return res.status(400).send(err['details']['0']['context']['label']);

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2017-12-07
      • 1970-01-01
      • 2021-11-03
      • 2018-09-24
      相关资源
      最近更新 更多