通过Node MySQL函数传递变量

时间:2018-02-13 14:12:25

标签: mysql node.js

我创建了一个简单的函数来运行查询并从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中编写函数的正确方法,使用该输入运行简单查询,以及响应行中字段的值吗?我疯了。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案 - 这是不可能做到的。 来自PHP背景,不是我以前编写的所有内容都是异步的。 此Node JS MySQL库异步运行其查询,因此回调函数无法返回任何内容。它只打印诸如console.log之类的东西。

我想我会恢复PHP。

How to return value from an asynchronous callback function?