我需要一些关于 pg npm 的帮助。
我已经阅读了许多文章和示例,并且对以正确的方式使用 pg 池完全感到困惑。我读过的许多文章都是旧的。
我想向您展示我的一些代码以及我如何围绕 db 构建所有内容。我很少担心需要您的支持。
这就是我实施的方式:
我只在服务器启动时与 Postgres 建立一次连接。
let pg = require('pg')
const db_config = {
user : DB_USER,
password : DB_PWD,
database : DB_NAME,
host : DB_HOST,
max : 5, // max number of clients in the pool
connectionTimeoutMillis : 5000,
idleTimeoutMillis : 30000
};
conn = new pg.Pool(db_config);
conn.connect((err, client, done) => {
if (err) {
log.error(err.message);
log.error(`could not connect to database`);
} else {
conn.query('SELECT 1', (err, res) => {
done();
if (err) {
log.error(err)
} else {
log.info("connected to database");
}
});
}
});
请注意conn
对象是全局的,我在程序中的每个地方都使用它。
然后我启动我的 HTTP 服务器。到达服务器的每个请求平均必须运行大约 25 个数据库查询。在程序的生命周期中,我使用相同的 conn 对象来触发查询,如下所示。代码中的每个函数仅包含以下用于查询的代码。
conn.query(query, function (err, docs) {
if (err) {
log.error(err);
} else {
// do something
}
});
我正在使用“pg”:“^6.2.2”
——————————————————</p>
我的担忧:
我在使用游泳池吗?
如何正确利用池?
每次在代码中执行任何查询之前,我是否需要连接到 pg ,这意味着 conn.connect ?
如果无法访问数据库,代码在读取时挂起,然后在很长一段时间后超时,我该如何处理?有什么办法可以让我在想要的时间之后超时?