@eggplugin/pg

0.9.0 • Public • Published

egg-pg

PostgreSQL plugin for Egg.js

NOTE: This plugin just for integrate pg into Egg.js, more documentation please visit https://node-postgres.com/.

NPM version build status Test coverage David deps Known Vulnerabilities npm download

Install

$ npm i @eggplugin/pg --save

Configuration

// {app_root}/config/plugin.js
exports.pg = {
  enable: true,
  package: '@eggplugin/pg',
};

see config/config.default.js for more detail.

Simple database instance

// {app_root}/config/config.default.js
exports.pg = {
  client: {
    user: '',
    host: '',
    database: '',
    password: ''
    // ...
  },
  // load into app, default is open
  app: true,
  // load into agent, default is close
  agent: false,
};

Usage:

(async () => {
  // you can access to pool instance using app.pg.
  const pool = app.pg;
  // check out a client
  const client = await pool.connect();
  try {
    const res = await client.query('SELECT * FROM users WHERE id = $1', [1]);
    console.log(res.rows[0]);
  } finally {
    // Make sure to release the client before any error handling,
    // just in case the error handling itself throws an error.
    client.release();
  }
  // Single query
  const { rows } = await pool.query('SELECT * FROM users WHERE id = $1', [1]);
  console.log('user:', rows[0]);
  
}).catch(console.error);

Multiple database instance

exports.pg = {
  // default configuration for all clients
  default: {
    port: 5432,
    max: 5,
    // ...
  },
  clients: {
    // clientId, access the client instance by app.pg.get('clientId')
    db1: {
      user: '',
      host: '',
      database: '',
      password: ''
    // ...
    },
    db2: {
      user: '',
      host: '',
      database: '',
      password: ''
      // ...
    },
    // ...
  },
  // load into app, default is open
  app: true,
  // load into agent, default is close
  agent: false,
};

Usage:

(async () => {
  const pool1 = app.pg.get('db1'); 
  const pool2 = app.pg.get('db2'); 
  // Single query
  const result1 = await pool1.query('SELECT NOW()');
  const result2 = await pool2.query('SELECT NOW()');
  // check out a client
  const client1 = await pool1.connect();
  const client2 = await pool2.connect();
}).catch(console.error);

Questions & Suggestions

Please open an issue here.

License

MIT

Package Sidebar

Install

npm i @eggplugin/pg

Weekly Downloads

2

Version

0.9.0

License

MIT

Unpacked Size

7.61 kB

Total Files

7

Last publish

Collaborators

  • fuxingzhang