首页 > 解决方案 > SELECT 查询的问题(NodeJs 和 mySQL)

问题描述

简单的用户登录应用程序出现问题。那里有代码。

exports.postLogIn = (req,res,next) =>{
    const reqName = req.body.name;
    const reqPassword = req.body.password;
    console.log(reqName,reqPassword);

    db.query('SELECT * FROM userinfo WHERE name = ? AND password = ?', [reqName, reqPassword], function(error, results, fields) {
        console.log(results.toString());
        console.log(error);
        console.log('qirwoe');
        res.end();
    });
    // User.userRequest(reqName,reqPassword, userInfo =>{
    //     console.log();
    //     if(userInfo.length>0){
    //         console.log('fail');
    //         // return res.render('user/fail')
    //     }
    //     console.log('aproved!');
    //     // return res.render('user/index',{user:userInfo,pageTitle:'Social Reporter',path:'/'})
    //     res.redirect('/');
    // });
}

所以,它根本不起作用,我没有从 console.logs 或任何东西得到任何响应。

这是我观察到的,

SELECT * 
FROM userinfo 
WHERE name = 'Gui' AND password = '123465'

在 mySQL 上运行此代码确实有效。我在 mySQL 工作台上得到回复。

无论如何,不​​知道还能做什么,如果我需要提供更多信息,请告诉我。感谢大家的关注!

在此处输入图像描述

标签: mysqlnode.js

解决方案


问题解决了!

对于那些有同样问题的人,我会在这里发布我的答案。

因此,通过一些研究,我发现这可能是一个异步问题,@esqew 评论也是如此。

然后我试图删除那些行,

db.query('SELECT * FROM userinfo WHERE name = ? AND password = ?', [reqName, reqPassword], function(error, results, fields) {
    console.log(results.toString());
    console.log(error);
    console.log('qirwoe');
    res.end();
});

这是问题所在,并替换为异步函数:

async function loginAttempt () {
    let [rows, fields] = await db.execute('SELECT * FROM userinfo WHERE name = ? AND password = ?',  [reqName, reqPassword]);
    console.log(rows);
}

loginAttempt();

问题已解决,请注意 mySQL 查询中的同步/异步功能。再次,如果我对任何信息有误,请纠正我。

希望我能帮助任何人。


推荐阅读