我创建了一个简单的函数来运行查询并从Node中的MySQL数据库中获取字段值。我正在使用普通的'mysql'库。但由于某些原因,我无法将结果字段值传递给函数。我做错了什么?
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'mydb'
});
//This is my function to fetch the field
function getinfofromdb(inputID){
connection.query('SELECT * FROM `mytable` WHERE ? ORDER BY `ID` DESC LIMIT 1;', {identifierID: inputID}, function (err, rows, fields) {
if(rows[0]['filename'].length > 0){
console.log(rows[0]['filename']); // This works fine! I just can't pass it as response. :(
response = rows[0]['filename'];
}else{
response = 'none found';
}
});
return response;
}
//However, I always get that 'response' is undefined
console.log(getinfofromdb(1));
此外,从内部函数返回也没有任何结果。 查询没有问题,因为我可以控制它。它很好,但它不会将它返回给函数。
if(rows[0]['filename']){
console.log(rows[0]['filename']); //This prints out just fine
return rows[0]['filename']; //Doesn't return anything
}
更新:我正在尝试的一切都没有产生任何结果。有人请告诉我使用接收输入的mysql库(https://github.com/mysqljs/mysql)在nodejs中编写函数的正确方法,使用该输入运行简单查询,以及响应行中字段的值吗?我疯了。
答案 0 :(得分:0)
我找到了解决方案 - 这是不可能做到的。 来自PHP背景,不是我以前编写的所有内容都是异步的。 此Node JS MySQL库异步运行其查询,因此回调函数无法返回任何内容。它只打印诸如console.log之类的东西。
我想我会恢复PHP。