2016-08-16 114 views
1

我正在开发一个用于身份验证的多模块模块,并且我在实际尝试对用户进行身份验证时遇到困难。使用快速/节点无法从mysql结果中获取值

connection.query('SELECT * FROM users WHERE username LIKE ?', [data.username], function (err, results) { 
    if (err) throw err; 
    var results=(JSON.stringify(results)); 
    console.log(results); 
    console.log(results.password) 
    if(results.password === password){ 
     var user = results; 
     // done(null, user); 
    } else { 
     console.log('else') 
     // done('Bad password', null) 
    } 
}); 

我有这样的MySQL查询其查找的用户名对应的记录,然后返回一个errresults。我用JSON.stringify初始转换结果:

[ RowDataPacket { id: 12, username: 'qqq', password: 'qqq' } ] 

要这样:

[{"id":12,"username":"qqq","password":"qqq"}] 

results.usernameresults.password机器人是不确定的。所以在我看来,stringyfied结果是一个包含对象的数组。

但是当我做

console.log(results[0].username); 
console.log(results[0].password); 

他们仍然undefined。那么如何将用户名/密码存储在变量中?

+0

您是否尝试过使用' for循环遍历所有返回的结果? – Derek

+0

由于某种原因,当我做'console.log(results.length)结果是45,并与一个for循环它计为45. –

+0

看到我的答案在下面,看看是否有帮助 – Derek

回答

1

尝试通过结果集这样的循环:

for (var i = results.length - 1; i >= 0; i--) { 
    var current = results[i]; 
    console.log(current); 
} 

那么,如果一切顺利的话,你应该能够检查每个变量有: current.username等。

+0

啊弦化“拧”我。我想知道我的for循环如何计算字符串中符号的确切数目。这很愚蠢。但是我无论如何都会把它留在这里。感谢您指出我的错误。 –

+0

没问题!有时它只是需要第二套眼睛,我们都在那里大声笑。 – Derek

+0

为了指出代码是如何工作的,for循环循环遍历结果数组中的所有对象,并且由于结果数组只有一个对象,它会将该对象推入当前的变量。 –