Jak korzystać z postgresów na serwerze?

Piszę serwer WWW Node.js, który korzysta z bazy danych Postgres. Zwykłem łączyć się przy każdym nowym żądaniu w ten sposób:

app.get('/', function (req, res) {
  pg.connect(pgconnstring, function (err, client) {
    // ...
  });
});

Ale po kilku żądaniach zauważyłem błędy „poza pamięcią” na Heroku podczas próby połączenia. Moja baza danych ma tylko 10 wierszy, więc nie widzę, jak mogłoby się to dziać. Cały mój dostęp do bazy danych ma taką formę:

client.query('SELECT * FROM table', function (err, result) {
  if (err) {
    res.send(500, 'database error');
    return;
  }

  res.set('Content-Type', 'application/json');
  res.send(JSON.stringify({ data: result.rows.map(makeJSON) }));
});

Zakładając, że błąd pamięci był spowodowany kilkoma trwałymi połączeniami z bazą danych, przełączyłem się na styl, który widziałem w kilkunode-postgres przykłady łączenia tylko raz na górze pliku:

var client = new pg.Client(pgconnstring);
client.connect();

app.get('/', function (req, res) {
  // ...
});

Ale teraz moje żądania zawieszają się (nieskończenie?), Gdy próbuję wykonać zapytanie po przerwaniu połączenia. (Symulowałem to, zabijając serwer Postgres i przywracając go.)

Więc jak mam zrobić jedną z nich?

Prawidłowo łącz połączenia Postgres, aby móc „ponownie łączyć się” za każdym razem bez wyczerpania pamięci.Niech globalny klient automatycznie połączy się ponownie po awarii sieci.

questionAnswers(1)

yourAnswerToTheQuestion