首页 > 解决方案 > MySQL TypeError:无法读取未定义的属性“查询”

问题描述

尝试使用节点连接到 MySQL 数据库,但我在下面不断收到此错误。

TypeError:无法读取未定义的属性“查询”

我相信我已经拥有了所需的所有模块和依赖项。

MySQL连接:

var pool = mysql.createConnection;
var pool = mysql.createConnection({
    connectionLimit : 10,
    host     : 'host',
    user     : 'username',
    password : 'password',
    database : 'dbname'
});

错误源于mysql.pool.query 开头的行:

app.post('/', function(request, response, mysql) {
    var username = request.body.username;
    var password = request.body.password;
    if (username && password) {
        mysql.pool.query('SELECT * FROM accounts WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
            if (results.length > 0) {
                request.session.loggedin = true;
                request.session.username = username;
                response.redirect('/Login_Page_V2');
            } else {
                response.send('Incorrect Username and/or Password!');
            }           
        });

我已经尝试过不同的代码,但这会导致错误“长度”未定义。

pool.query('SELECT * FROM accounts WHERE username = ? ...

我花了几个小时试图让它工作,但我真的被困住了,我可以使用一些帮助。

标签: javascriptmysqlsqlnodes

解决方案


pool.query('SELECT * FROM accounts ...实际上是正确的方法。

错误:“长度未定义”来自这种情况results.length > 0

您的 IF 语句应如下所示:

results && results.length >= 0

这样你就可以确定有一个结果(以及一个元素)并且它的长度大于 0。


推荐阅读