@Nikita1244
Anonymous

Бесконечная загрузка сайта, что делать?

Здравствуйте, я делаю вход для пользователя. Регистрация уже сделана и работает успешно. Не могу написать вход, бесконечная загрузка. Я задавал похожий вопрос, но тут явно проблема в другом. Версия Node.js: V18. Используемые библиотеки: express.js, mysql2. Страница загружается успешно, но когда я отправляю форму - начинается бесконечная загрузка, но задумано, чтобы писало: "Вы вошли под именем {имя пользователя}". Ошибку не выводит в консоли NodeJS.

Код

app.post('/login', urlencodedParser, async(req, res) => {
    // Capture the input fields
    let username = req.body.username;
    let password = req.body.password;
    // Ensure the input fields exists and are not empty
    try {
        if (username && password) {
            // Execute SQL query that'll select the account from the database based on the specified username and password
            await dbConnection.query('SELECT * FROM users WHERE name = ? AND password = ?', [username, password], function(err, results, fields) {
                // If there is an issue with the query, output the error
                // If the account exists
                if (results.length > 0) {
                    // Authenticate the user
                    req.session.loggedin = true;
                    req.session.username = username;
                    // Redirect to home page
                    res.send(`Вы вошли под именем ${username}`);
                } else {
                    res.send('Неправильный пароль или имя пользователя');
                }
                res.end();

            });
        } else {
            res.send('Введите имя пользователя/пароль');
            res.end();
        }
    } catch (err) {
        throw err
    }
});



Таблица users, MySQL:

1. Имя: name. Тип: VARCHAR(255)
2. Имя: password. Тип: VARCHAR(255)
3. Имя: id. Тип: INT. Доп. параметры: PRIMARY, AUTO_INCREMENT
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 1
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
Первое
dbConnection.query('SELECT * FROM users WHERE name = ? AND password = ?', [username, password], function(err, results, fields)

Не боишься sql-injection? Так никто не делает уже давно.

зависание связано с тем, что await выполняется долго. Может быть броблема с БД, нагруженностью или с соединением.
Надо поставить таймаут и его обработчик
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы