Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

118
Visualizações
asyncronous Mysql.createConnection({})

I need to create a mysql connection in nodejs , but the credentials for the mysql comes from a third party credential manager service. Can somebody suggest me a way to achieve this?

database.js - i am using connection from this file in all other database operations

const mysql = require("mysql");
const {env} = require('./globals')

const connection = mysql.createConnection({
    host: env.DATABASE.HOST,
    user: env.DATABASE.USER,
    password: env.DATABASE.PASSWORD,
    database: env.DATABASE.NAME,
    multipleStatements: true
});

connection.connect(function (err) {
    if (err) {
        console.log("Error in DB connection");
        console.log("err", err);
    } else console.log("Connected!");
});

module.exports = connection

globals.js

const {getSecret} = require('../src/service')
require("dotenv").config();

async function getCredentials() {
    const result = await getSecret()
    return JSON.parse(result?.SecretString || {})
}

const credentials =  getCredentials() // not working, and i can't use await here
const env = {
    DATABASE: {
        HOST: credentials.ip_address,
        PASSWORD: credentials.password,
        NAME: credentials.dbname,
        USER: credentials.username,
    },
    SKU: process.env.SKU
}

module.exports.env = env
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Your 2 main options are:

  1. Don't export connection but export an async function that returns a connection.
  2. Write an init() function that sets up your database connection, and ensure it's one of the first things your application calls before anything else.
about 4 years ago · Juan Pablo Isaza Relatório

0

Well first, you need to fix up that globals.js file. Logic that depends on an async function must be async itself. You can just move everything into the async function like so:

const {getSecret} = require('../src/service')
require("dotenv").config();

async function getCredentials() {
    const result = await getSecret()
    const credentials = JSON.parse(result?.SecretString || {})

    return {
        DATABASE: {
            HOST: credentials.ip_address,
            PASSWORD: credentials.password,
            NAME: credentials.dbname,
            USER: credentials.username,
        },
        SKU: process.env.SKU
    }
}

module.exports = { getCredentials }

And since even your database connection in database.js depends on this async function, it will have to be async as well:

const mysql = require("mysql");
const {getCredentials} = require('./globals')

const getConnection = getSecret().then(function (env) {

    const connection = mysql.createConnection({
        host: env.DATABASE.HOST,
        user: env.DATABASE.USER,
        password: env.DATABASE.PASSWORD,
        database: env.DATABASE.NAME,
        multipleStatements: true
    });

    connection.connect(function (err) {
        if (err) {
            console.log("Error in DB connection");
            console.log("err", err);
        } else console.log("Connected!");
    });
    
    return connection;

})

module.exports = getConnection
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda