我不断收到错误:ER_EMPTY_QUERY:QUERY 为空

时间:2021-07-18 23:03:25

标签: javascript mysql node.js express

我正在尝试制作一个注册页面。当我输入需要注册的数据时,它显示在控制台上,然后是错误:ER_EMPTY_QUERY。

我认为问题出在controllers/auth.js 文件中,但由于某种原因我无法弄清楚。请帮忙,过去 2 天一直被困在这个问题上。

控制器/auth.js:

const mysql = require('mysql');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs'); 

const db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'practice'
})

exports.register = (req, res) => {
    console.log(req.body)

    const {name, email, password, passwordConfirm} = req.body

    db.query('SELECT email FROM users WHERE email = ?' [email], async (error, results) => {
        if(error) {
            console.log(error)
        }

        if( results.length > 0 ) {
            return res.render('register', {
                message: 'That email is already is use'
            })
        } else if( password !== passwordConfirm) {
          return res.render('register', {
              message: 'Passwords do not match'
          })
        }

        let hashedPassword = await bcrypt.hash(password, 8);
        console.log(hashedPassword);

        db.query('INSERT INTO users SET ?', {name: name, email: email, password: hashedPassword}, (error, results) => {
            if(error) {
              console.log(error)
            } else {
                console.log(results);
                return res.render('register', {
                    message: 'User registered'
                })
            }
        })


    }) 

  
}

注册.hbs:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="/styles.css">
    <title>Document</title>
</head>
<body>
    <nav>
        <h4>Node MySQL</h4>
        <ul>
            <li><a href="/">Home</a></li>
            <li><a href="/login">Login</a></li>
            <li><a href="/register">register</a></li>
        </ul>
    </nav>

    <div class="container mt-4">
        <div class="card">
            <div class="card-header">
                Register Form
            </div>
            <div class="card-body">
                <form action="/auth/register" method="POST">
                    <div class="mb-3">
                        <label for="name">Name</label>
                        <input type="text" class="form-control" id="name" name="name">
                    </div>

                    <div class="mb-3">
                        <label for="email">Email address</label>
                        <input type="email" class="form-control" id="email" name="email">
                    </div>

                    <div class="mb-3">
                        <label for="password">Password</label>
                        <input type="password" class="form-control" id="password" name="password">
                    </div>

                    <div class="mb-3">
                        <label for="passwordConfirm">Confirm Password</label>
                        <input type="password" class="form-control" id="passwordConfirm" name="passwordConfirm">
                    </div>

                    <button type="submit" class="btn btn-primary">Submit</button>
                    </form>
            </div>
        </div>

        {{#if message}}
        <h4 class="alert alert-daner mt-4">{{message}}</h4>
        {{/if}}


    </div>



</body>
</html>

0 个答案:

没有答案