pgnode
TypeScript icon, indicating that this package has built-in type declarations

1.1.5 • Public • Published

:package: postgresql

📦 pgnode

PostgresSQL client to Nodejs servers

Issues GitHub pull requests GitHub Downloads GitHub Total Downloads

GitHub release dependency pg


Report Bug Request Feature

Systems on which it has been tested.

Ubuntu Alpine_Linux

Debian CentOS

Windows Macos

Did you like the project? Please, considerate a donation to help improve!

PostgresSQL client to Nodejs servers

Connect your database easily using the pgnode package

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

Package Sidebar

Install

npm i pgnode

Weekly Downloads

5

Version

1.1.5

License

MIT

Unpacked Size

31.3 kB

Total Files

23

Last publish

Collaborators

  • tecnobert