npm install co-pgCo wrapper for node-postgres.
Also supports ESNext's async/await.
```
$ npm install co-pg
co-pg provides higher order functions that will return a wrapped edition of pg. Everything that is availablepg
from is also available on co-pg with no alterations to the original API. The pg API methods that use aco
callback style interface also have companion promise methods that are usable by 4.0 and by ESNext async/await.
Supports:
- node-postgres
- node-pg-native
- node-postgres-pure (even though it has been deprecated)
Supports Node Engines:
- v0.12 (requires --harmony flag to work)
- v4
- v5
co-pg adds a few additional methods on top of the pg API.
- PG prototype adds the #connectAsync method#connectPromise
- also includes which aliases #connectAsyncClient
- prototype adds the #connectAsync and #queryAsync methods#connectPromise
- also includes which aliases #connectAsync#queryPromise
- also includes which aliases #queryAsync
These methods behave exactly the same as their counter-parts, including their arguments, except instead of
supplying a callback, the promise is yielded. All the original methods are still available by using the
sans-underscore methods. For documentation or help on how they work, please see the original project's documentation.
Connect to a postgres instance, run a query, and disconnect, using co.
`js
let co = require('co');
let pg = require('co-pg')(require('pg'));
let connectionString = 'postgres://postgres:1234@localhost/postgres';
co(function* connectExample() {
try {
let client = new pg.Client(connectionString);
yield client.connectPromise();
let result = yield client.queryPromise('select now() as "theTime"');
console.log(result.rows[0].theTime);
client.end();
} catch (ex) {
console.error(ex);
}
});
`
The underlying pooling system is not altered. The companion thunk methods can be used instead. Since PG#Connect
returns multiple objects, the return value is an array of those results. They can then be manually destructured
into separate variables for cleaner code.
`js
let co = require('co');
let pg = require('co-pg')(require('pg'));
let connectionString = 'postgres://postgres:1234@localhost/postgres';
co(function* poolExample() {
try {
let connectResults = yield pg.connectPromise(connectionString);
let client = connectResults[0];
let done = connectResults[1];
let result = yield client.queryPromise('select now() as "theTime"');
//call done() to release the client back to the pool
done();
console.log(result.rows[0].theTime);
process.exit();
} catch (ex) {
console.error(ex.toString());
}
});
``
- brianc/node-postgres: the PostgreSQL driver
- brianc/node-pg-native: the PostgreSQL drive using native bindings