sql >> Base de Datos >  >> RDS >> PostgreSQL

Cerrar la conexión del cliente postgres (pg) en node.js

Una interfaz basada en promesas como pg-promise es el camino a seguir:

var bluebird = require('bluebird');
var pgp = require('pg-promise')({
    promiseLib: bluebird
});
var db = pgp(/*connection details*/);

db.tx(t => {
    // BEGIN executed
    return t.map('SELECT id, chain FROM mytable where state_ready = $1 and transaction_id = $2', [true, 123], a => {
        var chain = data.chain;
        var pg_record = data.id;
        return t.none('UPDATE mytable SET transaction_id = $1::text where id=$2::int', [transactionHash, pg_record]);
    }).then(t.batch); // settling all internal queries
})
    .then(data => {
        // success, COMMIT executed
    })
    .catch(error => {
        // error, ROLLBACK executed
    })
    .finally(pgp.end); // shuts down the connection pool

El ejemplo anterior hace exactamente lo que solicitó, además utiliza una transacción. Pero en realidad querrás hacerlo todo en una sola consulta, por razones de rendimiento;)

Ver más ejemplos .