Node.js 在节点+;博士后,什么时候是关闭游泳池的合适时间?
我有一个应用程序,它使用了Node.js 在节点+;博士后,什么时候是关闭游泳池的合适时间?,node.js,postgresql,memory-leaks,Node.js,Postgresql,Memory Leaks,我有一个应用程序,它使用了节点postgres包的功能。我不明白的是什么时候需要通过pool.end()显式地创建一个池。我的应用程序很简单,只做一个单一的查询,如文档中所述 现在,我的代码是这样的。该池在单独的CJS模块中创建一次,永远不会关闭 // db.js const pg = require('pg'); /** As soon as the Node server starts, the pool is created and remains open for as lon
节点postgres
包的功能。我不明白的是什么时候需要通过pool.end()
显式地创建一个池。我的应用程序很简单,只做一个单一的查询,如文档中所述
现在,我的代码是这样的。该池在单独的CJS模块中创建一次,永远不会关闭
// db.js
const pg = require('pg');
/**
As soon as the Node server starts, the pool is created and
remains open for as long as the app is running
*/
const pool = new pg.Pool(SOME_CONFIG);
module.exports = pool;
// routes.js
const db = require('./db');
router.get('/foo', (req, res) => {
db.query(SOME_QUERY)
.then((result) => {
console.log(result);
// I do NOT do `db.end()` or anything here because then the app wouldn't work after a single query
})
.catch((err) => {
console.error(err);
});
});
不过,我想知道的是,是否应该在每次需要时显式创建池,然后在每次查询后关闭池:
// query.js
const pg = require('pg');
router.get('/foo', (req, res) => {
// create new pool every time
const db = new pg.Pool(SOME_CONFIG);
db.query(SOME_QUERY)
.then((result) => {
console.log(result);
db.end(); // close pool every time
})
.catch((err) => {
console.error(err);
});
});
我的目标只是避免内存泄漏。如果你还不知道的话,我是这方面的新手。当然,我的问题也可以推广到其他技术领域。我只是不明白什么时候确实需要关闭数据库池。请退出,您不需要直接使用数据库池。