Я использую пакет pg для обработки взаимодействия dp в моем приложении nodejs.
Цель состоит в том, чтобы наблюдать за добавлением / удалением файлов изображений в папке через пакет chokidar и файлы карт, добавляемые / удаляемые в таблицу БД, после изменения размера, если это необходимо.
Сначала я замечаю, что у chokidar большая задержка при запуске обратного вызова нового файла, добавленного в папку, возможно, из-за большого количества файлов> 100k
В любом случае, он запускает несколько событий одновременно, вызывая сброс соединения. Это должно быть связано с неправильным способом обработки пула соединений в pg. Вот это код:
const gm = require('gm').subClass({ imageMagick: true });
const chokidar = require('chokidar');
const pg = require('pg');
const pool = new pg.Pool({
connectionString: connectionString,
keepAlive : true });
watcher.on('add', file => {
console.log("File added: " + file)
pool.query(buildQueryStringInsert([file]))
.then(res => console.log("Query executed: "))
.catch(e => console.error(e.stack));
gm(file)
.size(function (err, size) {
if (size.width > resizeDim.width) {
resizeImage(file, file.insert(imageSuffix, file.lastIndexOf(".")))
}
});
});
StackTrace
Я также попытался установить соединение с клиентом и выпустить, как указано в документации, но я все еще получаю ту же ошибку
try {
const client = await pool.connect()
await client.query(buildQueryStringInsert([file]))
} catch (err) {
console.error(err.stack)
} finally {
client.release()
}
Спасибо за ваше время