sup*_*ods 1 postgresql node.js
当我pool.end()
在查询后使用时,收到错误消息“无法读取未定义的属性‘行’”。在我看来,我不应该pool.end
在查询完成后使用。那么我应该什么时候使用pool.end()
呢?
下面是我的代码片段:
const pool = new Pool({
user: process.env.PGUSER,
host: process.env.PGHOST,
database: process.env.PGDATABASE,
password: process.env.PGPASSWORD,
port: process.env.PGPORT
})
// Display schedule on home page
app.get('/', (req, res) => {
const displaySchedule = `SELECT * FROM schedule`;
pool.query(displaySchedule, (err, results) => {
if(err) {
throw err;
}
else {
res.render('index', {schedules: results.rows});
}
})
//pool.end();
});
Run Code Online (Sandbox Code Playgroud)
pool.end
完全关闭池。在您的情况下 - 在网络场景中 - 您不想这样做。否则,您将必须针对每个新请求连接到池。这违背了池化的目的。
在您的示例中,无需调用pool.end
- 您正在使用pool.query方法。您已完成所有设置,无需使用任何类型的客户端清理或池结束。
池通常是应用程序中长期存在的进程。您几乎不需要在 Web 应用程序中自行关闭它。
当您动态创建池或尝试正常关闭时,您将必须将其关闭。
例如:在测试环境中,您在所有功能/测试之前连接到池并在测试运行后断开连接,您pool.end
在最后调用所有动态创建的池。