rikidev Ответов: 0

Ожидание запроса для возвращаемого массива


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?


Что я уже пробовал:

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;

0 Ответов