Ожидание запроса для возвращаемого массива
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;