Node.js 如果快速验证的检查失败以及出现错误,如何将用户输入发送回表单?

Node.js 如果快速验证的检查失败以及出现错误,如何将用户输入发送回表单?,node.js,express,express-validator,Node.js,Express,Express Validator,很抱歉标题不好,我不知道怎么表达。现在学习node.js,我有以下问题 我使用边缘模板框架。我使用express验证作为中间件 所有的事情仍然可以很好地工作——但是我如何才能再次将用户输入发送/恢复到字段中,并将错误作为用户信息进行记录呢 这是我目前的代码: // Registration POST request router.post('/register', userController.verifyRegister, userController.checkUserExi

很抱歉标题不好,我不知道怎么表达。现在学习node.js,我有以下问题

我使用边缘模板框架。我使用express验证作为中间件

所有的事情仍然可以很好地工作——但是我如何才能再次将用户输入发送/恢复到字段中,并将错误作为用户信息进行记录呢

这是我目前的代码:

// Registration POST request
router.post('/register',
    userController.verifyRegister,
    userController.checkUserExists,
    userController.registerUser,
    authController.login
);

...
userController.js
... some code before ...

exports.verifyRegister = async (req, res, next) => {
    req.sanitizeBody('username');
    req.checkBody('username', 'Username should not be empty!').notEmpty();
    req.sanitizeBody('email');
    req.checkBody('email', 'Email should not be empty').notEmpty();
    req.checkBody('email', 'You must enter a valid email to register').isEmail();
    req.checkBody('password', 'Password should not be empty').notEmpty();
    req.checkBody('password-confirm', 'Password confirmation should not be empty').notEmpty();
    req.checkBody('password-confirm', 'Both passwords does not match!').equals(req.body.password);

    const errors = req.validationErrors();
    if(errors) {
        console.log(errors);
        //res.json(req.body.errors); //tried - no work?!?!
        res.redirect('back')
        return;
    }
    next();
}
// Check if the user already exists Will hook it up later
... works if all inputs are correct!! ...
我已经搜索并尝试了很多,但我不知道如何解决这个问题

你知道怎么做吗

谢谢

附言:我正在寻找一个人谁发展与我一起超过git。我还想学习git如何在git上开发一个小应用程序。谢谢。

verifyRegister()
是异步的,因此它返回一个承诺。但是,您不会等待请求.validationErrors()的
,因此您的if检查不会返回true

exports.verifyRegister = async (req, res, next) => {
    ...

    const errors = await req.validationErrors();
    if(errors) {
        console.log(errors);
        return res.redirect('back');
        
    }
    next();
}

如果这个答案有助于你解决问题,考虑将其作为有效答案接受或投票表决。谢谢。

ups-forggot:我不想用flash。。。还是更好的解决方案?verifyRegister()是异步的,因此它返回一个承诺。但是,您不会等待请求.validationErrors()的
,因此您的if检查不会返回true。