如何使用angular显示express验证器错误

How to display express-validator errors using angular?

本文关键字:验证 错误 express 显示 何使用 angular      更新时间:2023-09-26

我想弄清楚如何使用express-validator与angularjs和html一起显示验证错误,我的问题是我无法访问errors变量。

routes.js

router.post('/register', function(req, res){
 var name = req.body.name;
 var email = req.body.email;
 var username = req.body.username;
 var password = req.body.password;
 var password2 = req.body.password2;
 req.checkBody('name', 'Name is required').notEmpty();
 req.checkBody('email', 'Email is required').notEmpty();
 req.checkBody('email', 'Email not valid').isEmail();
 req.checkBody('username', 'Username is required').notEmpty();
 req.checkBody('password', 'Password is required').notEmpty();
 req.checkBody('password2', 'Passwords does not match').equals(req.body.password);
 var errors = req.validationErrors();
 if(errors){
     res.render('register.html', {
         errors: errors
     });
 } else {
     console.log('no errors');
 }})

我发现什么似乎是问题,在我的server.js。这似乎导致了express和angular路由之间的问题,使express路由失败,因此没有传递所需的数据。见下文.

app.use(function(req, res){
res.sendFile(__dirname + '/app/index.html');
});
app.use('/', routes);
app.use('/user', users);

如果我尝试这样做,见下面。

app.use('/', routes);
app.use('/user', users);
app.use(function(req, res){
res.sendFile(__dirname + '/app/index.html');
});

这使得快速路由传递数据,因为我想,但我的角路由似乎是bug,一旦我刷新页面-视图无法正确加载。

然而,我知道如何使用ejs或车把来显示这个,但这并不适合我的需要,应该有一种方法来存储错误与角和显示它与html的某种方式对吗?

任何帮助都是感激的!

你为什么不想使用angular自己的表单验证器呢?从用户体验的角度来看,它甚至可能更好,因为用户将立即知道他们的表单是否有效。它还可以让你做一些很酷的事情,比如禁用提交按钮,直到表单有效

<button type="submit" ng-disabled="myFormName.$invalid">Submit</button>

在需要的输入中添加一个简单的ng-required将满足您的大部分需求。设置input type="email"将验证电子邮件的格式是否正确。

唯一有点棘手的可能是检查密码是否匹配,但即使这样也可以通过属性指令实现。