使用 mysql
在nodejs模块中,我创建了一个小的数据库typescript文件来帮助我处理池和查询。
第一个功能是 connect
它回报了一个承诺
static connect(): Promise<any> {
return new Promise((resolve, reject) => {
fs.readFile('includes/config.txt', (err, data) => {
if (err) {
console.log('seems like config.txt file is corrupted, ignore message if connection established');
} else {
data = data.toString().split('\n');
host = data[0].substr(3);
user = data[1].substr(5);
password = data[2].substr(5);
pool = mysql.createPool({
host: host,
user: user,
password: password,
database: DB_NAME,
connectionLimit: 10
});
pool.on('release', (connection) => {
console.log('releasing your connection now');
});
pool.getConnection((err, connection) => {
if (err) { reject(err); }
resolve(connection);
});
}
});
});};
然后我有另一个函数“spquery”帮助我进行查询,然后在查询完成后释放连接
static spQuery(command: string, data, req?): Promise<any> {
data.push(JSON.stringify(adata));
command = command.slice(0, command.lastIndexOf('?') + 1) + ', ?)';
console.log('Command: ' + command);
console.log('Values: ' + data);
return new Promise((resolve, reject) => {
this.connect().then(conn => {
sqlConn = conn;
sqlConn.query(command, data, (err, results) => {
if(err){
reject(err);
} else{
results = results[0];
resolve(results)
}
});
}).catch(err => {
return reject(err);
}).then( () => {
sqlConn.release();
});
});}
现在我想可能错的是 spQuery
函数,我想我可能在 sqlConn.query(...)
执行完毕,因为 sqlConn.release();
是在 .then()
第一个的 connect
函数。。。但是如果我移动 sqlConn.release();
进入了 sqlConn.query
我听到一个错误说
错误:连接已释放
暂无答案!
目前还没有任何答案,快来回答吧!