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 
}

欢迎您的提问,当问题有答案时,您必须将其标记为已解决,如果有帮助,请对答案进行投票