【发布时间】:2021-07-13 14:13:30
【问题描述】:
我正在尝试使用连接池方法将我的应用程序连接到数据库,它的连接正常,并且数据插入正常进行,没有任何问题,但同一文件中的其他查询速度变慢。
我试过 release() 方法也不能正常工作。
一旦执行当前查询,如何将池释放到下一个查询?
下面是我的 dbpool.js 文件代码,我在其中编写了一个通用的通用数据库连接,
var pg = require('pg');
var PGUSER = 'postgres';
var PGDATABASE = 'test_database';
var config = {
user: PGUSER, // name of the user account
host: 'localhost',
database: PGDATABASE, // name of the database
password: 'password@AWS',
port: 5432,
max: 10,
idleTimeoutMillis: 10000
};
const pool = new pg.Pool(config);
const DB = {
query: function(query, callback) {
pool.connect((err, client, done) => {
if(err){ return callback(err); }
client.query(query, (err, results) => {
// done();
client.release();
// if(err) { console.error("ERROR: ", err) }
if(err) { return callback(err); }
callback(null, results.rows);
})
});
}
};
module.exports = DB;
我尝试了 done() 和 client.release() 方法,但没有运气。如果我同时使用两者,则会收到错误消息客户端已发布。
下面是我的socket.js文件代码:
var express = require('express');
const connection = require('./dbpool.js');
if(arData == '0022'){
const queryText = "INSERT INTO alert(alert_data) VALUES('"+arData+"')";
connection.query(queryText,(err, res) => {
if(err){
console.log(err.stack);
}
});
}
if(arData == '0011'){
const queryText = "INSERT INTO table2(alert_data) VALUES('"+arData+"')";
connection.query(queryText,(err, res) => {
if(err){
console.log(err.stack);
}
});
}
function ReverseCommunication(){
const select1 = "SELECT * FROM alert WHERE action = '0' ORDER BY alert_id ASC LIMIT 1";
connection.query(select1, (err, res) =>{
if(err) {
console.log("Error1");
res.json({"error":true});
}
else{
console.log("res==",res);
}
});
}
setInterval(function(){
ReverseCommunication();
}, 2000)
【问题讨论】:
标签: javascript node.js postgresql express