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
函数是什么?通过更改!生成错误,并打印出错误消息。多谢各位