An open API service indexing awesome lists of open source software.

https://github.com/hebertcisco/pgnode

PostgresSQL client to Nodejs servers
https://github.com/hebertcisco/pgnode

database javascript nodejs pgsql-connection-pooling postgres postgresql postgressql typescript

Last synced: 6 months ago
JSON representation

PostgresSQL client to Nodejs servers

Awesome Lists containing this project

README

          


:package: postgresql

:package: 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:

```bash
npm i pgnode
```

or

```bash
yarn add pgnode
```

Now in your project just import the module like this:

```js
const pg = require("pgnode");
```

Or you can use import:

```js
import pg from "pgnode";
```

## Client connection

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

```ts
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

```Typescript
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`