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

287
Visualizações
Express route works fine, until it calls separate function, crashes server

The first GET request, (/not-work), calls a separate function, database(), with some code to connect to a database and return data. This successfully runs the database() function and that function returns data, but const result, does not get that data properly returned. Instead an unfufilled database connection object is returned. The second request however, (/works), runs nearly the exact same code as, just within the GET route itself. This works perfectly. I cannot for the life of me understand why.

const http = require('http');
const express = require('express');
const app = express();
const sql = require('mssql')
const sqlConfig = {
    user: 'login',
    password: 'pass',
    database: 'database',
    server: '123.456.789.012'
}

const database = () => {
    return sql.connect(sqlConfig,
        (err) => {
            if (err) console.log(err);
            try {
                return new sql.Request()
                    .execute('dbo.SQLProcedure', (err, recordset) => {
                        if (err) console.log(err)
                        return recordset;
                    });
            }
            catch (err) {
                console.log(err)
            }
        });
}

app.get('/not-work', (req, res) => {
    const result = database();
    console.log(result);
    res.send(result);
});

app.get('/works', (req, res) => {
    sql.connect(sqlConfig,
        (err) => {
            if (err) console.log(err);
            try {
                new sql.Request()
                    .execute('dbo.SQLProcedure', (err, recordset) => {
                        if (err) console.log(err)
                        res.send(recordset);
                    });
            }
            catch (err) {
                console.log(err)
                res.send(err);
            }
        });
});

http.createServer(app).listen(888, () => {
    console.log('Server listening 888');
});

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

you must use async function and Promise

const database = async () => {
  return new Promise( (resolve, reject) => {
    sql.connect(sqlConfig,
      (err) => {
        if (err) console.log(err); // or reject(err)
        try {
          new sql.Request()
            .execute('dbo.SQLProcedure', (err, recordset) => {
              if (err) console.log(err) // or reject(err)
              return resolve(recordset);
            });
        } catch (err) {
          console.log(err) // or reject(err)
        }
      });
  })
}

app.get('/not-work', async (req, res) => {
    const result = await database();
    console.log(result);
    res.send(result);
});
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