Package Exports
- @pomgui/database-pg
- @pomgui/database-pg/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@pomgui/database-pg) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
PosgreSQL Database library
@pomgui/database-pg is a typescript library that provides an interface to execute the normal operations with a client pg database driver as connect, start transaction, commit, etc.
Advantages:
- All methods return promises.
- It uses query parameters like
:idinstead of?. - The parameters understand object's hierarchy, so it understands parameters like
:entry.id. - The returned rows also are preprocessed to return nested objects if needed (See Usage Example section).
- It maintains the same interface (@pomgui/database) no matter the database, so it helps with the migration from different databases E.g. MySQL to Firebird or to PostgreSQL and vice versa (See @pomgui/database-mysql usage example and compare)
Installation
Use npm to install the library.
npm install @pomgui/database-pg --saveUsage Example
import { PiPgPool } from '@pomgui/database-pg';
const options = {
connectionString: 'user:pass@host:5432/database'
};
async work(){
const pool = new PiPgPool(options, 10);
const db = await pool.get();
await db.beginTransaction();
try{
const param = {entry: {id: 3}};
const data = await db.query(`
SELECT
e.entry_id "id", e.entry_date,
b.benef_id "benef.id", b.name "benef.name"
FROM ENTRIES e JOIN BENEFICIARIES db ON b.benef_id = e.benef_id
WHERE entry_id >= :entry.id
LIMIT 10`, param);
console.log(data);
await db.commit();
}catch(err){
console.error(err);
await db.rollback();
}finally{
await db.close();
}
}This will print:
[{ id: 3,
entryDate: 2020-08-01T00:00:00.000Z,
benef: {
id: 1,
name: 'John Doe'
}
},{ id: 4,
date: 2020-08-02T00:00:00.000Z,
benef: {
id: 1,
name: 'Jane Doe'
}
}, ...
]