Optional INSERT-Anweisung in der Transaktionskette mit NodeJS und Postgres

Ich erstelle eine einfache Webapp mit NodeJS / Postgres das muss 3 Einfügungen in der Datenbank machen.

Zur Steuerung der Anweisungskette, die ich verwende pg-transaction.

Mein Problem ist, dass ich immer die 2 ersten INSERTS ausführen muss, aber ich habe eine Bedingung, um die 3. auszuführen.

Vielleicht könnte mein Code besser erstellt werden (Vorschläge sind willkommen).

Hier ist ein Pseudocode:

function(req, res) {
  var tx = new Transaction(client);
  tx.on('error', die);
  tx.begin();
  
  tx.query('INSERT_1 VALUES(...) RETURNING id', paramValues, function(err, result) {
    if (err) {
      tx.rollback();
      res.send("Something was wrong!");
      return;
    }
    
    var paramValues2 = result.rows[0].id;
    tx.query('INSERT_2 VALUES(...)', paramValues2, function(err2, result2) {
      if (err) {
        tx.rollback();
        res.send("Something was wrong!");
        return;
      }
      
      // HERE'S THE PROBLEM (I don't want to run it always this last statement)
      // If I don't run it, I will miss tx.commit()
      if (req.body.value != null) {
        tx.query('INSERT_3 VALUES(...)', paramValues3, function(err3, result3) {
          if (err) {
            tx.rollback();
            res.send("Something was wrong!");
            return;
          }
        
          tx.commit();
          res.send("Everything fine!");
        });
      }
    });
  });
}

Es scheint so hässlich, dreimal das gleiche zu wiederholenif (err) {} nach jeder Abfrage.

Versuche einige Optionen zu überprüfen, die ich gefunden habe Sequelize, konnte aber keinen Weg finden, um dieses Problem damit zu lösen.

Alle Vorschläge sind willkommen!

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage