diff --git a/README.md b/README.md index 2519d497..edecdfd6 100644 --- a/README.md +++ b/README.md @@ -10,60 +10,64 @@ Non-blocking PostgreSQL client for node.js. Pure JavaScript and native libpq bi ### Simple, using built-in client pool - var pg = require('pg'); - //or native libpq bindings - //var pg = require('pg').native +```javascript +var pg = require('pg'); +//or native libpq bindings +//var pg = require('pg').native - var conString = "tcp://postgres:1234@localhost/postgres"; +var conString = "tcp://postgres:1234@localhost/postgres"; - //error handling omitted - pg.connect(conString, function(err, client) { - client.query("SELECT NOW() as when", function(err, result) { - console.log("Row count: %d",result.rows.length); // 1 - console.log("Current year: %d", result.rows[0].when.getYear()); - }); - }); +//error handling omitted +pg.connect(conString, function(err, client) { + client.query("SELECT NOW() as when", function(err, result) { + console.log("Row count: %d",result.rows.length); // 1 + console.log("Current year: %d", result.rows[0].when.getYear()); + }); +}); +``` ### Evented api - var pg = require('pg'); //native libpq bindings = `var pg = require('pg').native` - var conString = "tcp://postgres:1234@localhost/postgres"; - - var client = new pg.Client(conString); - client.connect(); +```javascript +var pg = require('pg'); //native libpq bindings = `var pg = require('pg').native` +var conString = "tcp://postgres:1234@localhost/postgres"; - //queries are queued and executed one after another once the connection becomes available - client.query("CREATE TEMP TABLE beatles(name varchar(10), height integer, birthday timestamptz)"); - client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['Ringo', 67, new Date(1945, 11, 2)]); - client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['John', 68, new Date(1944, 10, 13)]); +var client = new pg.Client(conString); +client.connect(); - //queries can be executed either via text/parameter values passed as individual arguments - //or by passing an options object containing text, (optional) parameter values, and (optional) query name - client.query({ - name: 'insert beatle', - text: "INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", - values: ['George', 70, new Date(1946, 02, 14)] - }); +//queries are queued and executed one after another once the connection becomes available +client.query("CREATE TEMP TABLE beatles(name varchar(10), height integer, birthday timestamptz)"); +client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['Ringo', 67, new Date(1945, 11, 2)]); +client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['John', 68, new Date(1944, 10, 13)]); - //subsequent queries with the same name will be executed without re-parsing the query plan by postgres - client.query({ - name: 'insert beatle', - values: ['Paul', 63, new Date(1945, 04, 03)] - }); - var query = client.query("SELECT * FROM beatles WHERE name = $1", ['John']); +//queries can be executed either via text/parameter values passed as individual arguments +//or by passing an options object containing text, (optional) parameter values, and (optional) query name +client.query({ + name: 'insert beatle', + text: "INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", + values: ['George', 70, new Date(1946, 02, 14)] +}); - //can stream row results back 1 at a time - query.on('row', function(row) { - console.log(row); - console.log("Beatle name: %s", row.name); //Beatle name: John - console.log("Beatle birth year: %d", row.birthday.getYear()); //dates are returned as javascript dates - console.log("Beatle height: %d' %d\"", Math.floor(row.height/12), row.height%12); //integers are returned as javascript ints - }); - - //fired after last row is emitted - query.on('end', function() { - client.end(); - }); +//subsequent queries with the same name will be executed without re-parsing the query plan by postgres +client.query({ + name: 'insert beatle', + values: ['Paul', 63, new Date(1945, 04, 03)] +}); +var query = client.query("SELECT * FROM beatles WHERE name = $1", ['John']); + +//can stream row results back 1 at a time +query.on('row', function(row) { + console.log(row); + console.log("Beatle name: %s", row.name); //Beatle name: John + console.log("Beatle birth year: %d", row.birthday.getYear()); //dates are returned as javascript dates + console.log("Beatle height: %d' %d\"", Math.floor(row.height/12), row.height%12); //integers are returned as javascript ints +}); + +//fired after last row is emitted +query.on('end', function() { + client.end(); +}); +``` ### Example notes @@ -164,6 +168,3 @@ Copyright (c) 2010 Brian Carlson (brian.m.carlson@gmail.com) LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -