提问者:小点点

如何从Node.js中的数据库mysql中获取用户名


我制作了一个登录系统,我使用手机号码和密码登录。之前我的代码显示welcome back 03******,因为我使用了request.session.number。 我已更改代码,以便无论雇主或助手登录,我都可以从数据库中获得名字。但它不工作。显示欢迎回来,未定义。 我无法从数据库中得到名字。谁能告诉我如何得到它或者我错在哪里。 如果有人能在这方面帮助我,我将感激不尽。

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;
                  var name= connection.query(`select fyp_helpers.First_Name As name FROM fyp_helpers UNION select fyp_employers.Employer_Fname As name FROM fyp_employers`,[name,name],function(error, results, fields)
                   {
                    if(!err) 
                        console.log(name);
                    else
                        console.log(error);
                   })
                    response.redirect('/home');
                } else {
                    response.send('Incorrect Password!');
                    console.log(cryptErr);
                }
                response.end();
            });
        } 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) {
        response.send('Welcome back, ' + request.session.name + '!');
    } else {
        response.send('Please login to view this page!');
    }
    response.end();
});
app.listen(3000);

一切都很好,但唯一的问题是它没有命名。

编辑

 var name= connection.query(`select fyp_helpers.First_Name As name FROM fyp_helpers UNION select fyp_employers.Employer_Fname As name FROM fyp_employers`,[name,name],function(error, results, fields)
                   {
                    if(!error) {
                        request.session.name = name;
                        console.log(name);
                    }
                    else
                        console.log(error);
                   })

我已经向会话声明了名称,但它仍然不工作。我是否将它放置在错误的位置上,或者我的查询不正确,无法选择名称?


共1个答案

匿名用户

您忘记在request.session.name中添加name。 已提取变量name,但未使用。