我有以下代码:
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 / async,await一起使用吗?
如果否,如何以最佳方式实现Promise的Joi依赖项?
谢谢。
答案 0 :(得分:0)
发现了问题:
在使用以下方式发送回复时:
res.status(400).send(err['details']['0']['context']['label']);
我意识到我并没有使用return语句来使其变为“ final”。添加它可以解决该问题,如下所示:
return res.status(400).send(err['details']['0']['context']['label']);