express - PUT 方法的 express-validator
问题描述
我正在创建一个 API 并决定使用express-validator进行验证(duh),我以前从未使用过它,所以我不确定它的某些方面,所以我的验证可能不是最好的,但我得到了.
我已经使用它构建了两个验证中间件,并将它们从同一个文件夹中导出,如下所示:
module.exports = {
create: require('./create'),
update: require('./update')
}
所以我可以在我的路由器中执行此操作:
const validation = require('../validations/plotValidation')
// ...
router.get('/', controller.all)
router.post('/create', validation.create(), controller.create)
router.get('/:plotId', controller.read)
router.put('/:plotId/update', validation.update(), controller.update)
router.delete('/:plotId/delete', controller.delete)
// ...
我对 express-validator 不够好,无法使用同一个文件验证两条路线,也许我会在某个时候尝试一下。
.post 方法可以正常工作并验证我想要的所有内容,但是 .put 方法似乎忽略了这里的每个检查都是文件,以防您想查看检查:
const { body, check, param } = require('express-validator');
module.exports = () => {
return [
param('plotId')
.exists().withMessage('URI requires plot id'),
body('price')
.optional()
.isObject()
]
}
正如您可能知道的那样,我只是说出来了,但即使只有这两个微小的检查,它似乎也没有运行。
express-validator 是否不适用于 PUT 方法?
解决方案
对于遇到此问题的其他人,我通过在我的支票上使用来解决此问题,您可以在此处.run
阅读有关此问题的更多信息,基本上这是拯救我的代码:
// parallel processing
const validate = validations => {
return async (req, res, next) => {
await Promise.all(validations.map(validation => validation.run(req)));
const errors = validationResult(req);
if (errors.isEmpty()) {
return next();
}
res.status(400).json({ errors: errors.array() });
};
};
推荐阅读
- python - 将python文件和txt文件打包成exe
- javascript - 尝试在 Android 手机上使用生物识别身份验证时出现错误代码 605
- javascript - 关于新 Promise 中抛出错误的问题
- x86-64 - 处理中断时是否禁用中断?
- ios - 升级到 Xcode 12 SideMenue 框架链接错误
- macros - 构建用于生成访问 json 键的片段的宏
- gitlab - 如何将本地主分支推送到远程主分支?
- python - 如何使用 PyInstaller 将 python 脚本转换为二进制可执行文件
- neo4j - 为什么一个适度的 MATCH 和 CREATE 查询会在 Neo4j 浏览器中旋转?
- angular - 如何将数组作为数据从角度发送到快递路由器?