Als een methode een node "errback" is met een enkel argument - zal het opgelost worden zonder parameters in de then
of anders afgewezen worden met de err
eraan overgegaan. In het geval van een belofte, kun je deze opvangen met .error
of gebruik een catch met Promise.OperationalError
.
Hier is een eenvoudige benadering:
function getConnection(){
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret'
});
return connection.connectAsync().return(connection); // <- note the second return
}
getConnection().then(function(db){
return db.queryAsync(....);
}).error(function(){
// could not connect, or query error
});
Als dit is voor het beheren van verbindingen, zou ik Promise.using
gebruiken - hier is een voorbeeld van de API:
var mysql = require("mysql");
// uncomment if necessary
// var Promise = require("bluebird");
// Promise.promisifyAll(mysql);
// Promise.promisifyAll(require("mysql/lib/Connection").prototype);
// Promise.promisifyAll(require("mysql/lib/Pool").prototype);
var pool = mysql.createPool({
connectionLimit: 10,
host: 'example.org',
user: 'bob',
password: 'secret'
});
function getSqlConnection() {
return pool.getConnectionAsync().disposer(function(connection) {
try {
connection.release();
} catch(e) {};
});
}
module.exports = getSqlConnection;
Waarmee zou je kunnen doen:
Promise.using(getSqlConnection(), function(conn){
// handle connection here, return a promise here, when that promise resolves
// the connection will be automatically returned to the pool.
});