Почему я получаю [Обещание объекта] вместо обратного вызова - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь настроить страницу регистрации, которая использует экспресс-валидатор. Однако я получаю следующую ошибку всякий раз, когда я пытаюсь запустить свое приложение. Я предполагаю, что это как-то связано с частью Validator, так как я недавно перешел на более новую версию промежуточного программного обеспечения (6.2). До этого он был довольно устаревшим, но работал нормально.

   Error: Route.post() requires a callback function but got a [object Promise] 

а вот и ПОСТ

// Register - POST
router.post('/register', [
    check('userphonenumber', 'a user phone number is required').not().isEmpty(),
    check('fname', 'First name field is required').not().isEmpty(),
    check('lname', 'Last name field is required').not().isEmpty(),
    check('email', 'Email field is required').not().isEmpty(),
    check('email', 'Please use a valid email address').not().isEmpty()(),
    check('username', 'Username field is required').not().isEmpty(),
    check('password', 'Password field is required').not().isEmpty(),
    check('passwordConfirm', 'Passwords do not match').equals(body.password),
    check('zipCode', 'Zip Code field is required').not().isEmpty(),
    ], function(req, res) {
    // Get Form Values
    var fname           = req.body.fname;
    var lname           = req.body.lname;
    var email           = req.body.email;
    var username        = req.body.username;
    var phonenumber     = req.body.phonenumber;
    var password        = req.body.password;
    var passwordConfirm = req.body.passwordConfirm;
    var zipCode             = req.body.zipCode;


    // Check for errors
    const result = validationResult(req);
    var errors = result.errors;

    console.log(errors);

          if (!result.isEmpty()) {
            res.render('techregister', {
            errors: errors,
            fname: fname,
            lname: lname,
            email: email,
            username:username,
            password: password,
            passwordConfirm: passwordConfirm,
            zip : zipCode
            });
          }
     else {
        var newTech = {
            fname: fname,
            lname: lname,
            phonenumber: phonenumber,
            email: email,
            username:username,
            password: password,
            zipCode: zipCode,   
        }

        bcrypt.genSalt(10, function(err, salt){
            bcrypt.hash(newTech.password, salt, function(err, hash){
                newTech.password = hash;
                        techdb.users.insert(newTech, function(err, doc){
                            if(err){
                                res.send(err);
                            } else {
                                console.log('User Added...');


                                //Success Message
                                req.flash('success', 'You are registered please confirm with your email before you log in');

                                // Redirect after register
                                res.location('/admins/login');
                                res.redirect('/admins/login');
                            } 
                        });
                    });

                });
            }
        });

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Второе письмо check содержит лишние скобки ()

router.post('/register', [
check('userphonenumber', 'a user phone number is required').not().isEmpty(),
check('fname', 'First name field is required').not().isEmpty(),
check('lname', 'Last name field is required').not().isEmpty(),
check('email', 'Email field is required').not().isEmpty(),
check('email', 'Please use a valid email address').not().isEmpty(),
], function(req, res)
{
//...
});
1 голос
/ 29 октября 2019

Возможно, проблема вызвана этим фрагментом кода.

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

Согласно официальным документам result не имеет никакого свойства errors.
Возможно, вы захотите это var errors = result.array(); такошибки являются массивом любых ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...