sql >> Database >  >> RDS >> Mysql

Hoe werkt een beloofde mysql-module met NodeJS?

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.
});



  1. SQLite-trigger

  2. Hoe de database te controleren op een niet-geroot Android-apparaat?

  3. variabele databasenaam

  4. Problemen met transactionele replicatie van SQL Server