Czy ktoś mogłby zerknąc czemu nie zwraca mi danych w tablicy?

0

Mam kod w js ktory z bazy powinien zwracac dane do tablicy results:

checkIsUserExist: function(uid, err) {
	   if(err) {
		   return console.error('error fetching client from pool', err);
	   }
	   
	   var results = [];
	   
	   // SQL Query > Select Data
       var query = client.query("SELECT id, email FROM users ");

       // Stream results back one row at a time
       query.on('row', function(row) {
           results.push(row);
       });
       
       // After all data is returned, close connection and return results
       query.on('end', function() {
           console.log(results);
    	   //return results;
       });
       
       console.log(results);
       console.log('dupa');
    return 222;
	   
   }

jak wychodzi pierwszy log

 query.on('end', function() {
           console.log(results);
    	   //return results;
       });

to pokazuje wynik ok
ale poniżej jak jest

 console.log(results);
       console.log('dupa');
    return 222;

to wychodzi ze result jest puste []
potem 22 a na koncu zwraca mi 222 do glownej funkcji.
Jak zrobic zeby zwrocic results ?

0
 // Stream results back one row at a time
       query.on('row', function(row) {
           results.push(row);
       });
 
       // After all data is returned, close connection and return results
       query.on('end', function() {
           console.log(results);
           //return results;
       });

metoda "on" wykonuje się asynchronicznie. to znaczy, że funkcje które podałeś jako argumenty, wcale nie muszą wykonać się przed

 console.log(results);
       console.log('dupa');
    return 222;

czyli twoja funkcja nie może zwrócić results. możesz użyć callbacka

0

Masz racje zrbilem z callbackiem i dopiero na te dane dalsze dzialanie. dzieki za podpowiedz. Kocham Asynchronicznosc :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1