Wie verwende ich Node-Postgres in einem Server?

Ich schreibe einen Node.js-Webserver, der eine Postgres-Datenbank verwendet. Ich habe mich bei jeder neuen Anfrage folgendermaßen verbunden:

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

Aber nach ein paar Anfragen bemerkte ich Fehler auf Heroku, wenn ich versuchte, eine Verbindung herzustellen. Meine Datenbank hat nur 10 Zeilen, daher sehe ich nicht, wie dies geschehen könnte. Mein gesamter Datenbankzugriff hat folgende 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) }));
});

Unter der Annahme, dass der Speicherfehler auf mehrere dauerhafte Verbindungen zur Datenbank zurückzuführen ist, habe ich zu einem Stil gewechselt, den ich in mehreren gesehen habenode-postgres Beispiele für die Verbindung nur einmal am oberen Rand der Datei:

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

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

Aber jetzt hängen meine Anfragen (auf unbestimmte Zeit?), Wenn ich versuche, eine Abfrage auszuführen, nachdem die Verbindung unterbrochen wurde. (Ich habe es simuliert, indem ich einen Postgres-Server getötet und wieder hochgefahren habe.)

Wie mache ich eine davon?

Ordnungsgemäßes Poolen von Postgres-Verbindungen, sodass ich jedes Mal eine neue Verbindung herstellen kann, ohne dass mir der Arbeitsspeicher ausgeht.Lassen Sie den globalen Client nach einem Netzwerkfehler automatisch eine neue Verbindung herstellen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage