Click here to Skip to main content
15,888,007 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi guys with the code below I open a pool connection to sql server! My problem is that I should wait for the query to run, then return, how can I implement this?


What I have tried:

const DbConfig = require('../Config/DatabaseConfig.js');
const sql = require('mssql');

async function RicercaCantiere(NomeCantiere) {
    var data=[];
    
    const poolRicerca = await new sql.ConnectionPool(DbConfig.config, err => {
         if(err){
             
             console.log("Errore CantiereModel: Creazione Pool Connessioni su ricerca ",NomeCantiere)
             console.log(err)
         }

         poolRicerca.request().input('NomeCantiere', sql.VarChar, NomeCantiere).query("select * from( (/* Cantieri Consuntivo con Filiale */ SELECT Cantiere.IdCantiere,Cantiere.IdCliente, FilialeCliente.Citta as Filiale, Cliente.RagioneSociale, Cantiere.NomeCantiere, Cantiere.DataCreazioneCantiere, 'Consuntivo' as Tipologia, IdUtenteCreazioneCantiere, StatoCantiere, StatoFatturazione FROM Cantiere inner join CantiereConsuntivo on CantiereConsuntivo.IdCantiereConsuntivo = Cantiere.IdCantiere inner join Cliente on Cliente.IdCliente = Cantiere.IdCliente inner join FilialeCliente on FilialeCliente.IdFilialeCliente = CantiereConsuntivo.IdFiliale) union ( /*Cantieri Consuntivo senza Filiale*/ SELECT Cantiere.IdCantiere,Cantiere.IdCliente, 'SEDE' as Filiale, Cliente.RagioneSociale, Cantiere.NomeCantiere, Cantiere.DataCreazioneCantiere, 'Consuntivo' as Tipologia, IdUtenteCreazioneCantiere, StatoCantiere, StatoFatturazione FROM Cantiere inner join CantiereConsuntivo on CantiereConsuntivo.IdCantiereConsuntivo = Cantiere.IdCantiere inner join Cliente on Cliente.IdCliente = Cantiere.IdCliente where CantiereConsuntivo.IdFiliale is null) union ( /*Cantieri a Preventivo con Filiale*/ SELECT Cantiere.IdCantiere,Preventivo.IdCliente, FilialeCliente.Citta as Filiale, Cliente.RagioneSociale, Preventivo.RiferimentoInterno, Cantiere.DataCreazioneCantiere, 'Preventivo' as Tipologia, IdUtenteCreazioneCantiere, StatoCantiere, StatoFatturazione FROM Cantiere inner join CantierePreventivo on CantierePreventivo.IdCantierePreventivo = Cantiere.IdCantiere inner join Cliente on Cliente.IdCliente = Cantiere.IdCliente inner join Preventivo on Preventivo.IdPreventivo = CantierePreventivo.IdPreventivo inner join FilialeCliente on FilialeCliente.IdFilialeCliente = Preventivo.IdFiliale ) union  (/* Cantieri a Preventivo Senza Filiale */ SELECT Cantiere.IdCantiere,Preventivo.IdCliente, 'SEDE' as Filiale, Cliente.RagioneSociale, Preventivo.RiferimentoInterno, Cantiere.DataCreazioneCantiere, 'Preventivo' as Tipologia, IdUtenteCreazioneCantiere, StatoCantiere, StatoFatturazione FROM Cantiere inner join CantierePreventivo on CantierePreventivo.IdCantierePreventivo = Cantiere.IdCantiere inner join Cliente on Cliente.IdCliente = Cantiere.IdCliente inner join Preventivo on Preventivo.IdPreventivo = CantierePreventivo.IdPreventivo where IdFiliale is null ) )q  where NomeCantiere like '%' + @NomeCantiere +'%' ", (err, result) => {
            if(err){
                console.log("Errore Cantiere Model - sulla query nel pool ",err);
            }
            
            for(var i=0; i<result.recordset.length; i++){     
                data.push({
                    IdCantiere: result.recordset[i].IdCantiere, 
                    IdCliente: result.recordset[i].IdCliente,
                    Filiale: result.recordset[i].Filiale,
                    RagioneSociale: result.recordset[i].RagioneSociale,
                    NomeCantiere: result.recordset[i].NomeCantiere,
                    DataCreazioneCantiere: result.recordset[i].DataCreazioneCantiere,
                    Tipologia: result.recordset[i].Tipologia,
                    StatoCantiere: result.recordset[i].StatoCantiere,
                    StatoFatturazione: result.recordset[i].StatoFatturazione
              })
            }
        })
    });

    return data;
}

module.exports.RicercaCantiere = RicercaCantiere;
Posted
Updated 12-Apr-18 5:23am
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900