Javascript 如何使用express验证器
我需要验证器检查错误并登录控制台(如果有) 下面是我的代码Javascript 如何使用express验证器,javascript,node.js,arrays,express,validation,Javascript,Node.js,Arrays,Express,Validation,我需要验证器检查错误并登录控制台(如果有) 下面是我的代码 const expressValidator = require('express-validator'); const { check, validationResult } = require('express-validator/check'); const router = express.Router(); router.post('/add-page', function(req, res){ check("ti
const expressValidator = require('express-validator');
const { check, validationResult } = require('express-validator/check');
const router = express.Router();
router.post('/add-page', function(req, res){
check("title", "Title must have a value.").not().isEmpty();
check("content", "Content must have a value.").not().isEmpty();
var title = req.body.title;
var slug = req.body.slug.replace(/\#+/g, "-").toLowerCase();
if (slug == "") {
slug = title.replace(/\#+/g, "-").toLowerCase();
}
var content = req.body.content;
var errors = validationResult(req);
if (errors){
console.error(errors);
res.render("admin/add_page",{
errors: errors,
title:title,
slug:slug,
content:content
});
} else {
Page.findOne({slug:slug}, function(err, page){
if (page) {
req.flash("danger","Page slug exists, choose another.");
res.render("admin/add_page",{
title:title,
slug:slug,
content:content
});
} else {
var Page = new Page({
title:title,
slug:slug,
content:content,
sorting:0
});
Page.save(function(err){
if (err) {
return console.log(err);
} else {
req.flash("Success", "Page added!");
res.redirect("/admin/pages");
}
})
}
})
}
});
//Exports
module.exports = router;
但我在控制台中的结果是
Result { formatter: [Function: formatter], errors: [] }
express是一个中间件框架 expressvalidator用于验证请求,我们需要在请求实际传递之前调用验证程序,我们使用expressvalidator 在使用回调方法之前,您必须检查验证,以便在回调之前传递中间件 这是你该怎么做
router.post(
"/add-page",
[
check("title", "Title must have a value.").not().isEmpty(),
check("content", "Content must have a value.").not().isEmpty(),
],
(req, res) => {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
console.log(errors);//if client get any error the code will pass here you can do anything according to your choice
});
} catch (err) {
console.log(err);
}
}
);
你应该记录的是
if (!errors.isEmpty()) {
console.log(res.status(422).json({ errors: errors.array() }));
}
这是在express validator中记录错误的正确方法。无论何时提交包含无效字段的请求,您的服务器都会做出如下响应:
{
"errors": [{
... //fields
}]
}
对于express validator中所有可用的验证器(就像它的选项一样),请查看validator.js文档。您可以在路由器定义中传递一个数组,其中包含您希望对每个由给定路由处理的请求执行的每个验证 像这样
router.post(route_path, [...], function(req, res) {});
const { check, validationResult } = require('express-validator');
const router = express.Router();
router.post('/add-page', [
check("title", "Title must have a value.").not().isEmpty(),
check("content", "Content must have a value.").not().isEmpty()
], function(req, res) {
const errors = validationResult(req);
if(!errors.isEmpty()) {
console.log(errors);
return res.status(500).json({
errors
});
/*
return res.render("admin/add_page",{
errors: errors,
title:title,
slug:slug,
content:content
});
*/
}
// And the other code goes when validation succeed
}
对于您的具体情况,它将如下所示
const { check, validationResult } = require('express-validator');
const router = express.Router();
router.post('/add-page', [
check("title", "Title must have a value.").not().isEmpty(),
check("content", "Content must have a value.").not().isEmpty()
], function(req, res) {
const errors = validationResult(req);
if(!errors.isEmpty()) {
console.log(errors);
return res.status(500).json({
errors
});
/*
return res.render("admin/add_page",{
errors: errors,
title:title,
slug:slug,
content:content
});
*/
}
// And the other code goes when validation succeed
}
欢迎您的提问,当问题有答案时,您必须将其标记为已解决,如果有帮助,请对答案进行投票