-
-
Save alifarukm/233dbb623e6e4cb3b9c230ba04c13e00 to your computer and use it in GitHub Desktop.
node-postgres connection and query with async/await
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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