Skip to content

Instantly share code, notes, and snippets.

@jcxk
Forked from zerbfra/index.js
Created September 5, 2017 14:37
Show Gist options
  • Save jcxk/953b396483123c5d20f8707851199870 to your computer and use it in GitHub Desktop.
Save jcxk/953b396483123c5d20f8707851199870 to your computer and use it in GitHub Desktop.
node-postgres connection and query with async/await
const pg = require('pg')
// create a config to configure both pooling behavior
// and client options
// note: all config is optional and the environment variables
// will be read if the config is not present
var config = {
user: '', // env var: PGUSER
database: '', // env var: PGDATABASE
password: '', // env var: PGPASSWORD
host: 'localhost', // Server hosting the postgres database
port: 5432, // env var: PGPORT
max: 10, // max number of clients in the pool
idleTimeoutMillis: 30000 // how long a client is allowed to remain idle before being closed
}
const pool = new pg.Pool(config)
async function query (q) {
const client = await pool.connect()
let res
try {
await client.query('BEGIN')
try {
res = await client.query(q)
await client.query('COMMIT')
} catch (err) {
await client.query('ROLLBACK')
throw err
}
} finally {
client.release()
}
return res
}
async function main () {
try {
const { rows } = await query('SELECT * FROM users')
console.log(JSON.stringify(rows))
} catch (err) {
console.log('Database ' + err)
}
}
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment