Home > front end >  Unable to export db properties from nodejs module
Unable to export db properties from nodejs module

Time:12-11

I am trying to export database properties stored in properties file from Javascript module. By the time I read database properties file, Javascript file is already exported and data properties appear undefined wherever I use in other modules.

const Pool = require('pg').Pool;
const fs = require('fs')
const path = require('path');

class DbConfig {
    constructor(dbData) {
        this.pool = new Pool({
            user: dbData['user'],
            host: dbData['host'],
            database: dbData['database'],
            password: dbData['password'],
            max: 20,
            port: 5432
        });
    }
}

function getdbconf() {
    const dbData = {};
    fs.readFile("../../db_properties.txt"), 'utf8', (err, data) => {
        if (err) {
            console.error(err)
            return
        }
        // dbData = {"user":"postgres", "password": "1234"...};
        return dbData;
    });
}
    

let db = new DbConfig(getdbconf());
let dbPool = db.pool;
console.log("dbpool : -> : ",dbPool); // username and password appear undefined
module.exports = { dbPool };

Is there a way to read data before exporting data from Javascript module?

CodePudding user response:

Usually database config or any other sensitive info is read from a .env file using dotenv .

Or

you could also provide env from command line itself like

DB_HOST=127.0.0.1 node index.js

inside your index.js

console.log(process.env.DB_HOST)

CodePudding user response:

Please create a new file (connection-pool.js) and paste this code:

const { Pool } = require('pg');

const poolConnection = new Pool({
  user: 'postgresUserName',
  host: 'yourHost',
  database: 'someNameDataBase',
  password: 'postgresUserPassword',
  port: 5432,
});

console.log('connectionOptions', poolConnection.options);

module.exports = poolConnection;

For use it, create a new file (demo-connection.js) and paste this code:

const pool = require('./connection-pool');

pool.query('SELECT NOW();', (err, res) => {

    if (err) {
        // throw err;
        console.log('connection error');
        return;
    }

    if (res) {
        console.log(res.rows);
        pool.end();
    }
});

This is an alternative option

  • Related