Node.js 如何在用户在节点js中提交后显示验证消息错误?

Node.js 如何在用户在节点js中提交后显示验证消息错误?,node.js,validation,express-validator,Node.js,Validation,Express Validator,即使我输入的值为空,我也无法获得错误消息。它总是返回我{第一个:'',最后一个:'}。当我输入一些值时,它会按预期返回 var express = require('express'); var parser = require('body-parser'); var path = require('path'); var session = require('express-session'); const { check, validationResult } = require('expr

即使我输入的值为空,我也无法获得错误消息。它总是返回我{第一个:'',最后一个:'}。当我输入一些值时,它会按预期返回

var express = require('express');
var parser = require('body-parser');
var path = require('path');
var session = require('express-session');
const { check, validationResult } = require('express-validator');
var app = express();
app.set('port',(process.env.PORT || 5000));
app.use(parser.urlencoded({ extended: false }))
app.use(parser.json())

app.use(function(req,res,next){
    res.locals.userValue = null;
    res.locals.errors = null;
    next();
})
app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true,
    cookie: { maxAge: 60000 }
  }))

app.set('view engine','ejs');
app.set('views',path.join(__dirname,'views'))


app.get('/',function(req,res){
    res.render('home',{
        topicHead : 'Student Form'
    });
    console.log('user accessing Home page');
});
app.post('/student/add',function(req,res){
    let fname = req.body.fname
    let lname = req.body.lname
    // Check Input Field
    check('fname','Name is required').not().isEmpty(),
    check('lname','Name is required').not().isEmpty()
    const result= validationResult(req);
    var errors = result.errors;

  if (!result) {
  //response validate data to register.ejs
     res.render('home', {
      errors: errors
    })
    console.log('Error');
  }
  else{
    var student = {
        first : fname,
        last : lname
    }
    console.log(student);
    res.render('home',{
        userValue : student,
        topicHead : 'Student Form'
    });
    console.log('OK');
  }  
});
app.listen(app.get('port'),function(){
    console.log('server running on port '+app.get('port'));
})


<body>
    <form name="form1" method="POST" action="/student/add">
    <table>
        <tr>
        <td>First name</td>
        <td><input type="text" name="fname" ></td>
        </tr>
        <tr>
        <td>last name</td>
        <td><input type="text" name="lname" ></td>
        </tr>
        <tr>
        <td colspan="2"><input type="submit" value="Save" ></td>
        </tr>
    </table>
    </form>
    <% if (locals.errors) { %>
        <ul>
            <% Object.values(errors).forEach(function(error){ %>
                  <li><%= error.msg %></li>
            <% }); %>
        </ul>
        <% } %>
</body>
var express=require('express');
var parser=require('body-parser');
var path=require('path');
var会话=需要(“快速会话”);
const{check,validationResult}=require('express-validator');
var-app=express();
应用程序集('端口',(process.env.port | | 5000));
use(parser.urlencoded({extended:false}))
app.use(parser.json())
应用程序使用(功能(请求、恢复、下一步){
res.locals.userValue=null;
res.locals.errors=null;
next();
})
应用程序使用(会话)({
秘密:“键盘猫”,
resave:false,
saveUninitialized:true,
cookie:{maxAge:60000}
}))
app.set('view engine','ejs');
app.set('views',path.join('views'))
app.get('/',函数(req,res){
res.render('home'{
标题:“学生表格”
});
log(“用户访问主页”);
});
应用程序发布('/student/add',函数(请求、回复){
设fname=req.body.fname
设lname=req.body.lname
//检查输入字段
检查('fname','Name is required')。not().isEmpty(),
检查('lname','Name is required').not().isEmpty()
常量结果=验证结果(req);
var误差=结果误差;
如果(!结果){
//对register.ejs的响应验证数据
res.render('home'{
错误:错误
})
console.log('Error');
}
否则{
var学生={
第一:fname,,
最后:lname
}
console.log(学生);
res.render('home'{
用户价值:学生,
标题:“学生表格”
});
console.log('OK');
}  
});
app.listen(app.get('port'),function(){
console.log('server running on port'+app.get('port'));
})
名字
姓

我希望输出是显示错误消息,而不是{first:'',last:''},并且应该显示错误控制台日志,而不是显示OK控制台日志。根据express validator文档,似乎检查使用了错误的方式。

下面的代码片段应该可以解决这个问题

   app.post('/student/add',[
    check('fname','Name is required').not().isEmpty(),
    check('lname','Name is required').not().isEmpty()
  ],function(req,res){
    // Check Input Field

    const result= validationResult(req);
    var errors = result.errors;

    let fname = req.body.fname
    let lname = req.body.lname
  if (!result) {
  //response validate data to register.ejs
     res.render('home', {
      errors: errors
    })
    console.log('Error');
  }
  else{
    var student = {
        first : fname,
        last : lname
    }
    console.log(student);
    res.render('home',{
        userValue : student,
        topicHead : 'Student Form'
    });
    console.log('OK');
  }  
});

您的
validationResult
函数是什么?通过更改!生成错误,并打印出错误消息。多谢各位