sql >> Databasteknik >  >> RDS >> PostgreSQL

Stänger postgres (pg) klientanslutning i node.js

Ett löftesbaserat gränssnitt som pg-promise är vägen att gå:

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

Exemplet ovan gör precis vad du bad om, plus att det använder en transaktion. Men i verkligheten kommer du att vilja göra allt i en fråga, av prestandaskäl;)

Se fler exempel .




  1. Organisera data baserat på tidsstämpel mysql + PHP

  2. Skapa ett skalbart databasschema för att lagra golfresultat

  3. Unik begränsning för kombination av två kolumner?

  4. JDBC-anslutning till Oracle-databas med TLS-certifikat