gpt4 book ai didi

mysql - mysql包装函数的问题

转载 作者:行者123 更新时间:2023-11-30 23:36:40 24 4
gpt4 key购买 nike

我是第一次玩 Node.JS 应用程序,到目前为止我很喜欢它,但是我遇到了一个问题...

我在 client.query 函数上写了一个包装函数,它只允许我传递一个参数,它从允许的查询数组中获取查询...

    var runProcedure = function(proc, vars){
var params;
if(typeof vars != 'undefined'){
params.concat(eval('(' + vars + ')'));
}

this._client.query(queries[proc], params, function(err, results, fields){
if(err) { throw err; }
if(results){
return(results);
}else{
return "No data found.";
}
});
}

函数正常工作,如果我使用 console.log 结果,我想要的数据就在那里。但是,它没有返回到我调用它的地方......

    var data = runProcedure(procedureName, parameters);
console.log(data); // undefined

在排错的时候,好像查询函数是异步运行的....但这给我带来了很大的问题。 runProcedure 函数是从 http 请求处理程序中调用的。所以我需要能够访问响应变量。我想我可以把它作为参数一直传递下去……但这看起来很笨拙。处理这个问题的最佳代码模式是什么?我应该将响应设置为全局变量吗?我可以同步运行 mysql 吗?

干杯,

白原子

最佳答案

只需将您的数据传递给回调,而不是使用 return 返回

var runProcedure = function(proc, vars, callback) {

var params;
if(typeof vars != 'undefined'){
params.concat(eval('(' + vars + ')'));
}

this._client.query(queries[proc], params, function(err, results, fields){
if(err) { throw err; }
if(results){
callback(results);
}else{
callback('No data found.');
}
});

现在在 http 请求处理程序中:

// ...
function httpRequestHandler(req, resp)
{
//...
runProcedure(proc, vars, function(dbResp) {
if (dbResp === 'No data found.')
{
// handle error
} else {
// do something with result
}
})
}

关于mysql - mysql包装函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6808154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com