проверьте, если имя пользователя и адрес электронной почты уже существуют с помощью expressjs validator и mysql - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу проверить, существует ли уже электронная почта в базе данных mysql, с помощью пакета express-validator для этого. Пример проверки электронной почты не для базы данных mysql.

Код успешно отправляет значения формы, но проверки пропускаются. Это промежуточное программное обеспечение, но промежуточное программное обеспечение не было реализовано до вставки в базу данных.

Решение, которое я в настоящее время реализовал, основано на stackoverflow. Но все еще не работает для меня

router.post("/register",[
    body('username').not().isEmpty().isLength({ min: 4 }).trim().escape(),
    //check if email is aleady existing in the database
    body('email').not().isEmpty().isEmail().normalizeEmail().custom(async (email, {req})=>{
        const getEmails = "SELECT * FROM users WHERE email=" + req.body.email;

        return await con.query(getEmails, [email], (error, rows, fields)=>{
            if(error){
                console.log("the email is not ok",error)

            }else{
                if (rows.length != 0) {
                    res.redirect('/guests/register');
                    return Promise.reject("user already exists.");
                }else{
                    return true;
                }
            }
        })
    }),//end check if email already exit
    body('phone').not().isEmpty().isLength({ min: 6 }),
    body('password').not().isEmpty().isLength({ min: 6 }),
    //check if password match
    body('passwordConfirmation').not().isEmpty().isLength({ min: 6 }).custom((value, { req }) => {
        if (value !== req.body.password) {
          throw new Error('Password confirmation does not match password');
        }
        return true;
    }),
      //check if password match  

], async function(req, res, next) {
    try{
        var usernames = req.body.username;
        var emails = req.body.email;
        var phones = req.body.phone;
        const hashedPassword = await bcrypt.hash(req.body.password, 10);

        let sql = "INSERT INTO `users` (username, email, phone, password) VALUES ('" + usernames + "', '" + emails + "', '" + phones + "', '" + hashedPassword + "')";

        con.query(sql, function (err, result) {
            if (err) throw err;
            console.log("1 record inserted, ID: " + result.insertId);
            res.redirect('/guests/login');
        })  

    }catch{
        //console.log("something is wrong", error)
        res.redirect('/guests/register');
    }

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