gpt4 book ai didi

mysql - Promise-MySQL 无法将连接释放回池中

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:07 25 4
gpt4 key购买 nike

我是 Node.js 开发的新手,我正在开发一个需要我从 mysql 数据库中提取用户的应用程序。我正在使用 promise-mysql 库来查询 mysql 数据库。我正在尝试使用这样的连接池:

var pool = mysql.createPool({
host: hgh.host,
user: hgh.user,
password: hgh.pw,
database: hgh.name,
connectionLimit: 10
});

作为我模块中的全局变量。

然后我使用上述函数从池中返回一个连接。

function connect() {
return pool.getConnection().then(function(connection) {
return connection
}).catch(function(error) {
console.log("Connect failed");
throw ErrorModel.generateErrorObject(error, 500);
});
}

下面是我用来查询数据库的函数:

function getUser(username) {
var sql_query = `SELECT * FROM userstable WHERE userName = ` + `'` + username + `'`;
return connect().then(function(conn) {
return conn.query(sql_query).then(function(rows) {
console.log("HGH getUser Then");
console.log(pool);
conn.release();
return rows;
});
}).catch(function(error) {
console.log("HGH getUser Catch");
console.log(error);
throw ErrorModel.generateErrorObject(error, 500);
});
}

我遇到了这个问题:

conn.release 在尝试将我当前的连接释放到池中时不是函数。我的逻辑在这里错了吗?我的目标是拥有一个包含一堆连接(最多一定数量)的池,如果用户需要查询,getConnection() 函数只是从池中获取一个空闲连接,或创建他们一个。问题是我这辈子都无法将它作为免费释放回池中..每次我用conn.end()而不是发出请求释放 连接保留在池的 _allConnections 数组中,当我控制它时,_freeConnections 数组中绝对没有连接。

有谁知道我怎样才能让连接再次免费??

最佳答案

查看模块的代码,我找到了从池中释放连接的函数:

pool.prototype.releaseConnection = function releaseConnection(connection) {
//Use the underlying connection from the mysql-module here:
return this.pool.releaseConnection(connection.connection);
};

因此,如果所有这些函数都在同一个文件中,您可以在 getUser 函数中执行以下操作:替换

conn.release();

pool.releaseConnection(conn);

关于mysql - Promise-MySQL 无法将连接释放回池中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35491132/

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