如何使用Node从MySQL正确返回结果?

在代码中

var stuff_i_want = '';

stuff_i_want = get_info(parm);

和功能get_info:

get_info(data){

var sql = "SELECT a from b where info = data"

connection.query(sql, function(err, results){

if (err){

throw err;

}

console.log(results[0].objid); // good

stuff_i_want = results[0].objid; // Scope is larger than function

console.log(stuff_i_want); // Yep. Value assigned..

}

在更大的范围内

stuff_i_want = null

关于返回mysql数据并将其分配给变量,我缺少什么?

=============根据Alex建议的新代码

var parent_id = '';

get_info(data, cb){

var sql = "SELECT a from b where info = data"

connection.query(sql, function(err, results){

if (err){

throw err;

}

return cb(results[0].objid); // Scope is larger than function

}

====正在使用新代码

 get_data(parent_recording, function(result){ 

parent_id = result;

console.log("Parent ID: " + parent_id); // Data is delivered

});

然而

console.log("Parent ID: " + parent_id);

在函数外部的作用域中,parent_id为null

回答:

您将需要使用javascript进行异步调用和回调,这不是c#/ php等。

这是使用您的代码的示例:

function get_info(data, callback){

var sql = "SELECT a from b where info = data";

connection.query(sql, function(err, results){

if (err){

throw err;

}

console.log(results[0].objid); // good

stuff_i_want = results[0].objid; // Scope is larger than function

return callback(results[0].objid);

}

}

//usage

var stuff_i_want = '';

get_info(parm, function(result){

stuff_i_want = result;

//rest of your code goes in here

});

当您get_info依次调用此function(err, results)函数时,将调用connection.query,它接受一个回调(这就是

作用域,然后将范围传递给此回调,依此类推。

欢迎使用JavaScript回调地狱…

当您掌握它时很容易,只是需要一点点习惯,就来自C#之类的东西

以上是 如何使用Node从MySQL正确返回结果? 的全部内容, 来源链接: utcz.com/qa/400452.html

回到顶部