не может устанавливать заголовки после их отправки в node.js - PullRequest
1 голос
/ 10 июля 2020

Я пытаюсь перенаправить на домашнюю страницу. html после успешного входа в систему. Но я получаю сообщение об ошибке, и страница не отображается. Я знаю, что это может быть связано с двумя отправленными ответами или чем-то в этом роде. Я опубликовал перед этим вопрос о stackoverflow, но не получил никакого ответа. Я действительно буду оценивать, если кто-нибудь может мне помочь :)

Я также использовал return response.redirect('/home');, как было указано в одном из ответов, но все же ничего не работает.

На домашнем маршруте у меня есть console.log, и он работает, но файл не отображается. Итак, я предполагаю, что этот код перенаправляется на /home, но не открывает файл.

Когда я использую console.log(response.headersSent);, он отображает false.

app.post('/auth', function(request, response) {
    var number = request.body.number;
    var password = request.body.pwd;

     if (number && password) {
    var sql = `SELECT 
            fyp_helpers.Mobile_number AS number,
            fyp_helpers.Password AS  Password
        FROM fyp_helpers 
        WHERE Mobile_number = ? 
    UNION 
        SELECT 
            fyp_employers.Employer_Contact AS number ,
            fyp_employers.Employer_Password AS Employer_Password
        FROM fyp_employers 
        WHERE Employer_Contact = ?`;
    connection.query(sql, [number, number], function (error, results, fields) {
        if (results.length > 0) {
            var hashedPassword = results[0].Password;
            bcrypt.compare(password, hashedPassword, function (cryptErr, cryptResult) {
                if (cryptResult) {
                    request.session.loggedin = true;
                    request.session.number = number;
                    return response.redirect('/home');
                } else {
                    response.send('Incorrect Password!');
                    console.log(cryptErr);
                }
               
            });
        } else {
            response.send('User not registered');
        }
    });
}
        else {
        response.send('Please enter Username and Password!');
        response.end();
    }

});


app.get('/home', function(request, response) {
    if (request.session.loggedin) {
       console.log('I am home'); 
         response.sendFile(path.join(__dirname + '/HomePage.html'));
    } else {
        response.send('Please login to view this page!');
    }
    response.end();
});
app.listen(3000);

Вот ошибка.

1 Ответ

1 голос
/ 10 июля 2020

Вы не ждете своей функции обратного вызова. Вы должны использовать обещание для своего connection.query и явно ждать его, используя async для возврата.

Соответствующий вопрос с хорошим ответом можно найти здесь .

...