Klaus1: node.js und promise-mysql: Wie Fehlerbehandlung?

Beitrag lesen

Hallo,

folgender Code funktioniert soweit erstmal einwandfrei:

var mysql = require( 'promise-mysql' );

var pool  = mysql.createPool({
	host: "localhost",
	user: "user",
	password: "gaaanzgeheim",
	database: "datenbank",
});

param1 = 23;
param2 = 70;
param3 = 162;
param4 = 295;

pool.getConnection()
	.then(connection => {
		connection.query('select data from werte where idnr = ?', param1)
		.then( (rows1) => {
			console.log(param1+": "+rows1[0].data);
			return connection.query('select data from werte where idnr = '+param2);
		})
		.then( (rows2) => {
			console.log(param2+": "+rows2[0].data);
			return connection.query('select data from werte where idnr = '+param3);
		})
		.then( (rows3) => {
			console.log(param3+": "+rows3[0].data);
			return connection.query('select data from werte where idnr = '+param4);
		})
		.then( (rows4) => {
			console.log(param4+": "+rows4[0].data);
		})
	})

console.log("fertig");

Die Frage ist nun, wie ich hier sinnvoll eine Fehlerbehandlung einbaue. Da es nur Selects sind, muss ich schonmal kein "beginTransaction" oder so verwenden. Aber wenn z.B. ein Eintrag nicht gefunden wird, dann bricht mir das Script ab mit dem Fehler: "Unhandled rejection TypeError".

Jetzt könnte ich wohl jedes Kommando mit einem Try {} Catch {} klammern. Oder in jedes Query das Errorhandling einbauen:

connection.query('select data from werte where idnr='+param1, function (err, rows) {
    if (err) throw new Error(err)
})

Oder die Variable prüfen:

if (!rows[0].data) {
	throw err;
}

Oder ein .catch(err) an jedes Ende vom .then einbauen?

Was denkt ihr? Was ist die sinnvollste und lesbarste Form der Fehlerbehandlung?

LG Klaus