当我调用方法时,查询返回未定义
2013-02-22
1344
node-mysql
query
返回
undefined
。
这是我的代码:
Hash.prototype.GetHash = function()
{
var test;
var connection = this.config.CreateConnection();
connection.connect(function(err){
if (err)
throw err;
else
{
var query = "SELECT hash FROM test WHERE id = 1";
connection.query(query, function(err, rows, result){
if (err)
throw err;
else
{
test = rows[0].hash;
console.log(test);
}
});
connection.end(function(err){
if (err)
throw err;
});
}
});
return test;
}
console.log 将给我正确的结果
1a2b3c4d
。
因此。当我将此方法调用到主方法时:
var h = hash.GetHash();
console.log(h);
控制台给我结果
undefined
。
因此,我尝试强制转换、重新输入、从字符串类创建一个新对象:
此对象
test
例如:
var test = '';
var test = new String;
var test = new String(rows[0].hash);
但没有成功:\ 有人能帮我解决这个问题吗?非常感谢大家!
1个回答
Node.js 是异步的,您的代码
Hash.prototype.GetHash = function() {
将无法工作,因为它在调用时立即返回值,但尚未执行。因此,当您打印测试时,它会给出未定义。
要使用您的函数计算并尝试返回的
test
,您必须在函数完成后使用带有 test 作为参数的回调来使用它。您必须对函数进行一些更改。
Hash.prototype.GetHash = function(callback){
//pass callback in arguments if you want it to be provided when calling
... //compute test
//return test; Dont do return, do callback
callback(test);
}
//Your definition of callback should be
callback = function(h){
console.log(h);
}
查看教程以了解更多信息:
user568109
2013-02-22