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);
    });
});
我的目标只是避免内存泄漏。如果你还不知道的话,我是这方面的新手。当然,我的问题也可以推广到其他技术领域。我只是不明白什么时候确实需要关闭数据库池。

请退出,您不需要直接使用数据库池。