关於 errorBack 中的 promise.all
来源:7-9 客户端提交数据安全校验.mp4

weixin_慕勒6073767
2022-06-26
老师您好,在 errorBack 中,跟著课程及文档的写法去循环做错误校验时:
const { validationResult } = require('express-validator');
module.exports = (validator) => {
return async (req, res, next) => {
await Promise.all(
validator.map((validate) => {
validate.run(req);
})
);
const errors = validationResult(req);
console.log('errors:', errors);
if (!errors.isEmpty()) {
return res.status(401).json({ error: errors.array() });
}
next();
};
};
上述写法 errors 会是空的,打印出errors: Result { formatter: [Function: formatter], errors: [] }
,以至於没办法侦测到错误。
但若是把循环的地方改成下列两种写法就可以產生出正确结果:
await Promise.all(
validator.map(async (validate) => {
await validate.run(req);
})
);
for (let validate of validator) {
const result = await validate.run(req);
if (result.errors.length) break;
}
请问是什麼原因让第一种写法无法顺利遍歷出错误呢?还请老师解答。
写回答
2回答
-
qq_慕斯卡6298961
2022-07-19
同样的问题
00 -
北瑶
2022-06-27
我看你给出的代码并没有明显错误,两种方式的代码实现在官方文档中,也是明确说明支持,可以在检查一下是否有其他地方的代码出现问题。可以结合 文档地址:https://express-validator.github.io/docs/running-imperatively.html 在检查一下其他地方的代码。
或者,将你的代码发给我,一起看看,已经给你发私信了,记得查收
00
相似问题
關於書寫格式的問題
回答 1
关于在vue项目中模块化使用
回答 2
關於id值和文檔結構不相符的問題
回答 1
想了解 node 做中间层的一些知识
回答 1
关于JS与Node.js的关系
回答 1