gpt4 book ai didi

mysql - NodeJS 和 mysql : wait for query result

转载 作者:可可西里 更新时间:2023-11-01 06:44:43 24 4
gpt4 key购买 nike

我有一个用 nodejs + express 制作的小项目,我还制作了一个小服务,可以在其中的一些页面上共享。

var mysql = require('mysql');

var pool = mysql.createPool({
connectionLimit : 100,
host : 'host',
user : 'user',
password : 'password',
database : 'database',
debug : false
});

function executeQuery(query, callback) {
pool.getConnection(function (err, connection) {
if (err) {
return callback(err, null);
}
else if (connection) {
connection.query(query, function (err, rows, fields) {
connection.release();
if (err) {
return callback(err, null);
}
return callback(null, rows);
})
}
else {
return callback("No connection", null);
}
});
}


function getResult(query) {
return executeQuery(query, function (err, rows) {
if (!err) {
return rows;
}
else {
console.log(err);
}
});
}

function getServers()
{
var list = getResult("select * from table");
return list;
}

exports.getList = getList;

现在,我的问题是:当我调用 module.GetServers(); 时从另一个模块,结果总是未定义的,因为 pool.getConnection 是异步的(我想,我很新)所以 executeQuery 没有结果。如何强制 executeQuery 等待 connection.query 产生结果?

最佳答案

在您的 executeQuery 函数中,您使用回调来等待结果。同样,通过在 getResult 函数中实现它们,您可以让它在查询执行后等待结果。像这样。

var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 100,
host : 'host',
user : 'user',
password : 'password',
database : 'database',
debug : false
});

function executeQuery(query, callback) {
pool.getConnection(function (err, connection) {
if (err) {
return callback(err, null);
}
else if (connection) {
connection.query(query, function (err, rows, fields) {
connection.release();
if (err) {
return callback(err, null);
}
return callback(null, rows);
})
}
else {
return callback(true, "No Connection");
}
});
}


function getResult(query,callback) {
executeQuery(query, function (err, rows) {
if (!err) {
callback(null,rows);
}
else {
callback(true,err);
}
});
}

function getServers() {
getResult("select * from table",function(err,rows){
if(!err){
return rows;
}else{
console.log(err);
}
});
}

exports.getList = getList;

关于mysql - NodeJS 和 mysql : wait for query result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31775177/

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