2016-04-12 5 views
-2

Ich habe eine Funktion getUserId(), in der ich eine andere Funktion habe, die Wert von db zurückgibt. Das Ergebnis wird in Array arrUser abgelegt. Das Array wird in der Funktion, aber nicht in einer anderen Funktion gedruckt. kann mir jemand die Lösung gebenWie man einen Wert von einer Funktion zu einem anderen im Knoten js zurückgibt

+2

Mögliche Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf?] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – VonD

Antwort

-1

Das ist normal. Die Abfrage für die Datenbank ist asynchron. Dies bedeutet, dass Sie diesen Code console.log(arrUser); // does not print value ausführen, bevor die Abfrage abgeschlossen wurde. Sie können einen Rückruf (in Ihrem Fall, es ist nutzlos, können Sie Ihren Code in 1 einzelne Funktion schreiben ...):

function getUserId() { 
    getArrayFromDatabase(function(err, result) { 
    console.log(result); 
    }); 
} 


function getArrayFromDatabase(callback) { 
    var arrUser = new Array(); 

    connection.query('SELECT iUserId,sFromEmailAddress FROM tblFromSenderList',function (err, results, fields) { 
    if (err) { 
     return callback(err, null); 
    } 

    if (results.length > 0) { 
     for (var i = 0; i< results.length ;i++){ 
     var reader = results[i]; 
     arrUser[reader['sFromEmailAddress']] = reader['iUserId']; 
     } 

     console.log(arrUser); // prints value over here 

     callback(null,arrUser); 
    } 
}); 
} 
+0

var objUser = new getUserId(); Das Objekt objUser muss das Array arrUser enthalten – max

Verwandte Themen