我正在使用pg包在我的nodejs应用程序中处理dp交互。
目标是通过chokidar包观看在文件夹中添加/删除图像文件,并在需要调整大小后将添加/删除的图像文件映射到db表中。
我最初注意到的是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(".")))
}
});
});
我也尝试按照文档中的建议与客户端和发行版建立连接,但是我仍然遇到相同的错误
try {
const client = await pool.connect()
await client.query(buildQueryStringInsert([file]))
} catch (err) {
console.error(err.stack)
} finally {
client.release()
}
感谢您的时间