node.js - NodeJS,Joi验证-验证失败后中止执行

标签 node.js error-handling header send joi

我有以下代码:

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 header (错误400)时,执行也不会停止并且会继续运行。
我认为发生这种情况是因为它已经跳到了执行的其他部分,甚至没有到达返回 header 错误消息的那一部分。

我该如何避免呢?我要避免的唯一方法是将Joi依赖项与回调/promises/async,await一起使用吗?

如果没有,如何以最佳方式实现Promise的Joi依赖关系?

谢谢。

最佳答案

发现问题:
使用以下命令发回响应时:res.status(400).send(err['details']['0']['context']['label']);
我意识到我没有按顺序使用return语句使其成为“最终”。添加它可以解决此问题,如下所示:
return res.status(400).send(err['details']['0']['context']['label']);

关于node.js - NodeJS,Joi验证-验证失败后中止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52485951/

相关文章:

node.js - 如何在 NestJS 上为 MongoDB 实现存储库设计模式

javascript - 带有 [Object 对象] 的文本区域

ios - ECGraph无法在设备上运行,但可以在模拟器上运行

c - 使用全局结构变量时出现段错误

php - 标题背景颜色和大小

node.js - Node.js 中的 process.env.PORT 是什么?

android - 字符串: Actual and formal argument lists differ in length中的错误

python-3.x - 将鼠标悬停在wxpython选项卡上时发生错误

c - 有没有办法在 C 的同一个头文件中包含静态原型(prototype)和公共(public)原型(prototype)?

node.js - 异步查找子字符串匹配。递归?扁平化?