1.1.5 • Published 5 months ago

pgnode v1.1.5

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Getting started

Installation

To install the module in your project just run the command below:

npm i pgnode

or

yarn add pgnode

Now in your project just import the module like this:

const pg = require("pgnode");

Or you can use import:

import pg from "pgnode";

Client connection

This is the simplest possible way to connect, query, and disconnect with async/await:

import pg, { Client, Pool } from "pgnode";

const config = {
  user: process.env.POSTGRES_USER,
  host: process.env.POSTGRES_HOST,
  database: process.env.POSTGRES_DATABASE,
  password: process.env.POSTGRES_PASSWORD,
  port: Number(process.env.POSTGRES_PORT),
};

const client = new pg.Client({ ...config });

function query(sql, params) {
  return client
    .connect()
    .then(() => client.query(sql, params))
    .then((res) => {
      client.end();
      return res;
    });
}

Transactions (tx)

Usage

import {tx, Client, Pool} from 'pgnode';

const client = new Client({
  user: process.env.POSTGRES_USER,
  host: process.env.POSTGRES_HOST,
  database: process.env.POSTGRES_DATABASE,
  password: process.env.POSTGRES_PASSWORD,
  port: Number(process.env.POSTGRES_PORT)
});

const pool = new Pool({...client});

export async function createTable(){
  return await tx(pool, async (db) => {
    await db.query(`
      CREATE TABLE IF NOT EXISTS test
      (
        id   SERIAL PRIMARY KEY,
        name TEXT NOT NULL
      );`);
  });
}

// or use a generator function to create the transactions

export function* createTableGenerator(){
  yield tx(pool, async (db) => {
    await db.query(`
      CREATE TABLE IF NOT EXISTS test
      (
        id   SERIAL PRIMARY KEY,
        name TEXT NOT NULL
      );`);
  });
  // create another transaction
  yield tx(pool, async (db) => {
    await db.query(`
      INSERT INTO test (name) VALUES ('test');`);
  });
}

Features

  • Pure JavaScript client and native libpq bindings share the same API
  • Support all tls.connect options being passed to the client/pool constructor under the ssl option.
  • Connection pooling
  • Extensible JS ↔ PostgreSQL data-type coercion
  • Supported PostgreSQL features
    • Parameterized queries
    • Named statements with query plan caching
    • Async notifications with LISTEN/NOTIFY
    • Bulk import & export with COPY TO/COPY FROM
    • Change default database name
    • make pg.Pool an es6 class
    • pg.Client and pg.Pool are ES6 classes
    • Support for pg.Client.prototype.query and pg.Pool.prototype.query
    • Support generator functions
    • Support for Nodejs ^v16x
1.1.5

5 months ago

1.1.4

10 months ago

1.1.3

1 year ago

1.1.1

2 years ago

1.1.2

2 years ago

1.0.2

2 years ago

1.1.0

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago