JavaScript - promesas nodejs mssql

 
Vista:
sin imagen de perfil

promesas nodejs mssql

Publicado por Daniel (1 intervención) el 13/08/2021 21:31:15
Hola soy nuevo en js estoy desarrollando un modulo de búsqueda necesito preguntar en varias bases y diferentes tablas en SQL Server, por lo que leí las promesas son la solución para realizarlo en paralelo y sea más rápido el resultado pero no comprendo como realizar la promesa, ya que como lo tengo ahora se ejecuta la promesa cuando llamo a la función y cuando llamo a promise.all() se vuelven a ejecutar las promesas. Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const promesasNombres = (query, databases) => {
    configSQL.database = databases
    return new Promise(function(resolve, reject) {
       return sql.connect(configSQL).then(pool => {
            return pool.request()
            .query(query)
        }).then(result => {
           resolve(result);
          console.log(result)
        }).catch(err => {
          reject(err);
        });
    })
}
const  buscarNombre = async (req = request, res = response) => {
    try {
        const { termino } = req.params;
        const resulta = [];
        const promises = [];
 
        const databases = 'Prueba'
        let query = `select * from dbo.A1 where NOMBRE_COMPLETO = '${termino}'`;
        promises.push(promesasNombres(query,databases));
        query = `select * from dbo.A2 where Nombre_Completo = '${termino}'`;
        promises.push(promesasNombres(query,databases));
        // //
        databases = 'Prueba2'
        query = `select * from dbo.A3 where Nombre_Completo = '${termino}'`;
        promises.push(promesasNombres(query,databases));
        query = `select * from dbo.A4 where Nombre_Completo = '${termino}'`;
        promises.push(promesasNombres(query,databases));
 
        const resultd = await Promise.all(promises);  // Vuelve a realizar las promesas
        resultd.forEach(resultado => {if (resultado.recordsets[0].length > 0) resulta.push(resultado.recordsets[0])})
        return res.json({
           results: resulta
        });
    }
    catch (error) {
        console.log(error);
        res.status(500).json({
            msg : 'Error en las bases de datos.'
        });
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder