我有以下代码:
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/