Narcissistic, Perfectly Modest
    Wondering what’s next for npm?Check out our public roadmap! »

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

    1.4.3 • Public • Published

    Nest Logo

    pg-promise Module for Nest framework

    CI NPM Version Package License NPM Downloads

    Buy Me A Coffee

    Description

    This's a nest-pgpromise module for Nest. This quickstart guide will show you how to install and execute an example nestjs program..

    This document assumes that you have a working nodejs setup in place.

    Download from NPM

    npm install --save nestjs-pgpromise

    Initialize

    You need five items in order to connect to the PostgreSQL server.

    Params Description
    host Host IP address or URL.
    port TCP/IP port number to access the database.
    database The name of the database to connect to.
    user The username to access the database.
    password The username's password to access the database.

    And you can use as well all the other parameters allowed by pg-promise package. See the documentation.

    Provide the credentials for pg-promise module by importing it as :

    As Connection object

    import { Module } from '@nestjs/common';
    import { NestPgpromiseClientController } from './nest-pgpromise-client.controller';
    import { NestPgpromiseModule } from 'nestjs-pgpromise';
    
    @Module({
      controllers: [NestPgpromiseClientController],
      imports: [
        NestPgpromiseModule.register({
          connection: {
            host: 'localhost',
            port: 5432,
            database: 'cmdbbtbi',
            user: 'cmadbbtbi',
            password: 'cghQZynG0whwtGki-ci2bpxV5Jw_5k6z',
          },
        }),
      ],
    })
    export class AppModule {}

    As Connection string

    import { Module } from '@nestjs/common';
    import { NestPgpromiseClientController } from './nest-pgpromise-client.controller';
    import { NestPgpromiseModule } from 'nestjs-pgpromise';
    
    @Module({
      controllers: [NestPgpromiseClientController],
      imports: [
        NestPgpromiseModule.register({
          connection: "postgres://YourUserName:YourPassword@YourHost:5432/YourDatabase"
        }),
      ],
    })
    export class AppModule {}

    Then you can use it in the controller or service by injecting it in the controller as:

    constructor(@Inject(NEST_PGPROMISE_CONNECTION) private readonly pg: IDatabase<any>) {}

    Quick Start Example

    This example program connects to postgres on localhost and executes a simple select query from table tasks.

    import { Controller, Get, Inject, Logger } from '@nestjs/common';
    import { NEST_PGPROMISE_CONNECTION } from 'nestjs-pgpromise';
    import { IDatabase } from 'pg-promise';
    
    @Controller()
    export class NestPgpromiseClientController {
      private logger = new Logger('controller');
      constructor(@Inject(NEST_PGPROMISE_CONNECTION) private readonly pg: IDatabase<any>) {}
    
      @Get()
      async index() {
        this.pg
          .any('SELECT * FROM task')
          .then(data => {
            // success;
            this.logger.log(data);
          })
          .catch(error => {
            // error;
            this.logger.log(error);
          });
      }
    }

    As pg-promise methods return promises, the new async/await syntaxis can be used.

    import { Controller, Get, Inject, Logger } from '@nestjs/common';
    import { NEST_PGPROMISE_CONNECTION } from 'nestjs-pgpromise';
    import { IDatabase } from 'pg-promise';
    
    @Controller()
    export class NestPgpromiseClientController {
      private logger = new Logger('controller');
      constructor(@Inject(NEST_PGPROMISE_CONNECTION) private readonly pg: IDatabase<any>) {}
    
      @Get()
      async index() {
        try {
          const data = await this.pg.any('SELECT * FROM task');
          // success;
          this.logger.log(data);
        } catch(e) {
          // error;
          this.logger.log(error);
        }
      }
    }

    You can also pass in initoptions as supported by pg-promise.

    import { Module } from '@nestjs/common';
    import { NestPgpromiseClientController } from './nest-pgpromise-client.controller';
    import { NestPgpromiseModule } from 'nestjs-pgpromise';
    
    @Module({
      controllers: [NestPgpromiseClientController],
      imports: [
        NestPgpromiseModule.register({
          connection: {
            host: 'localhost',
            port: 5432,
            database: 'cmdbbtbi',
            user: 'cmadbbtbi',
            password: 'cghQZynG0whwtGki-ci2bpxV5Jw_5k6z',
          },
          initOptions:{/* initialization options */};
        }),
      ],
    })
    export class AppModule {}

    You can find the details about them in the pg-promise documentation

    Contributors

    Thanks goes to these wonderful people (emoji key):


    Vitaly Tomilov

    🚇 ⚠️ 💻

    Matthew J. Clemente

    🚇 ⚠️ 💻

    Jason Santiago

    📖

    Hector

    📖

    This project follows the all-contributors specification. Contributions of any kind welcome!

    Install

    npm i nestjs-pgpromise

    DownloadsWeekly Downloads

    412

    Version

    1.4.3

    License

    MIT

    Unpacked Size

    30.3 kB

    Total Files

    34

    Last publish

    Collaborators

    • avatar