仍然新的nodejs不确定我在这里做错了什么,我试图从这个函数返回一个值。然而,我试图返回的变量总是重置。
function executeQuery( stmt, data ) {
var outhjk = "";
pool.connect(function(err, client, done) {
if(err) {
console.error('error fetching client from pool', err);
}
client.query(stmt, data, function(err, result) {
//call `done()` to release the client back to the pool
done();
if(err) {
return console.error('error running query', err);
}
outhjk = "just work please";
});
});
return outhjk;
}
您的查询没有在池内运行。连接它直接返回var = ";如果你使用的是最新版本的node.js,你可以使用new Promise((resolve, reject)=>{});或者如果旧版本使用'async'模块或任何其他模块来处理node.js异步函数
客户端。查询是异步的。return语句:return outhjk;
将在函数执行之前被调用,因为return更快…
处理这个问题的标准方法是使用回调函数:
function executeQuery( stmt, data, callback ) {
var outhjk = "";
pool.connect(function(err, client, done) {
if(err) {
console.error('error fetching client from pool', err);
}
client.query(stmt, data, function(err, result) {
//call `done()` to release the client back to the pool
done();
if(err) {
return console.error('error running query', err);
}
outhjk = "just work please";
callback(outhjk);
});
});
}
然后用回调函数调用函数,你可以这样做:
var stmt = //stmt value here;
var data = //data value here;
executeQuery( stmt, data, function (outhjk) {
//here you can use outhjk
});
阅读本文了解回调的要点