node-postgres: [ошибка] Этот сокет был завершен другой стороной
Я использую node-protgres для манипулирования БД в моем приложении nodejs.
Что я сделал:
const { Pool, Client } = require('pg')
var dbconnect = {
user: 'xxxxx',
database: 'xxxxx',
password: 'xxxxx',
host: 'xxxxx.yyyyy.zzzzz.eu-west-1.rds.amazonaws.com',
port: 0000,
max: 20, // max number of clients in the pool
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000
};
const pool = new Pool(dbconnect);
pool.on('error', function (err, client) {
console.error('idle client error', err.message, err.stack)
});
function listOfPets(req, res) {
pool.connect(function (err, client, done) {
if (err) {
return console.error('error fetching client from pool', err);
}
var sql =
"SELECT * FROM pets"
client.query(sql, function (err, result) {
done();
if (err) {
return console.error('error running query', err);
}
... //Handle the result
});
});
}
Функция работает нормально, однако сервер продолжает посылать мне сообщение об ошибке ОК до серьезного. Я проверил журнал:
ошибка незанятого клиента Этот сокет был завершен другой стороной Ошибка: этот сокет был завершен другой стороной в Socket.writeAfterFIN [as write] (net.js:291:12) в Connection.end (/var/app/current/node_modules/pg/lib/connection.js:313:22) в global.Promise (/var/app/current/node_modules/pg/lib/client.js:410:23) в Client.end (/var/app/current/node_modules/pg/lib/client.js:409:12) в Pool._remove (/var/app/current/node_modules/pg-pool/index.js:135:12) в Timeout.setTimeout (/var/app/current/node_modules/pg-pool/index.js:38:12) в ontimeout (timers.js:365:14) в tryOnTimeout (timers.js:237:5) в Timer.listOnTimeout (timers.js):207:5)
Я думаю, что проблема возникла из-за того, что "done ()" не работает или было помещено не в том месте.
Любое предложение приветствуется.
1 ответ
Попробуйте объявить pool
объект внутри обратного вызова. У меня была аналогичная ошибка с клиентом postgres. Я решил это, объявивclient
внутри обратного вызова для запроса GET.
Взгляните на эту проблему, там я нашел свое решение: проблема Github
Надеюсь, это поможет вам =). Я думаю, что вы можете использовать эту ссылку для исправления http://mherman.org/blog/2015/02/12/postgresql-and-nodejs/