我想创建一个Express REST API,并想验证请求参数和请求主体。如果一切正常,我想调用控制器逻辑。
我的验证中间件是
"{* * test * { * username: {{username}} * } }"
.substr(1)
.slice(0, -1)
.split("* * test *")
.pop()
.replace(" { *","{\n\t")
.replace("* } ", "\t\n}");
,然后在调用控制器之前在路由中使用它。这是我的 topics.js 路由文件的一部分
const { validationResult } = require('express-validator/check');
module.exports = (req, res, next) => {
const validationErrors = req.validationResult();
if (!validationErrors.isEmpty()) {
// send a 400
}
next();
}
我尝试使用docs
https://express-validator.github.io/docs/#basic-guide
但是在启动API时出现此错误
错误:Route.post()需要回调函数,但得到了[对象 布尔]
所以看来我无法先传递数组,然后传递验证中间件,然后传递控制器。
有没有办法修复路由文件?我不想处理控制器文件中的验证逻辑。我认为这应该在之前完成。
答案 0 :(得分:1)
您需要使用oneOf检查条件参数。
在路由中,您使用check('parentTopicId').isUUID() || check('parentTopicId').isNull()
,但返回布尔值和express需要中间件。 oneOf
专为此目的而构建。
另外,您应将!check
替换为check('name').not().isEmpty()
。