2016-11-09 3 views
0

Das ist Code in meinem Projekt Node.js, aber ich kann nicht auf den Wert connection2 zugreifen. Ich habe irgendwo gelesen, dass .getConnection asynchrone Funktion ist, so kann ich den Wert von connection2 auf diese Weise nicht erhalten. Wie kann ich diesen Code ändern, um den Wert korrekt zurückzugeben?Wie gibt man einen Wert von dieser Funktion zurück?

var mysql = require('mysql'); 
    var connectionPool = mysql.createPool({ 
     host: 'localhost', 
     user: 'root', 
     password: '', 
     database: 'rockcity_followme' 
    }); 
exports.connExport=function() { 
    var connection2; 
    connectionPool.getConnection(function (err, connection) { 
     connection2=connection; 
    }); 
    return connection2; 
} 

Antwort

0

Sie können die Verbindung hier nicht zurückgeben. Es muss asynchron sein, daher nehmen Sie einen Rückruf als Parameter und rufen den Rückruf auf, wenn Sie die Verbindung haben.

exports.connExport=function(callback) { 
    connectionPool.getConnection(function (err, connection) { 
     callback(connection); 
    }); 
} 

Siehe this Weitere Informationen über asynchrone vs synchrone Funktionen in Knoten.


Wenn eine Funktion asynchron arbeitet, muss sie asynchron sein. Um connExport von einem anderen Modul zu verwenden, muss es asynchron verwendet werden.

var yourModule = require("yourModule"); 
yourModule.connExport(function(connection) { // <-- the callback function 
    // you can use connection here 
}); 
+0

Das ist, was ich nicht verstehe. Wo sollte ich die Callback-Funktion schreiben/definieren? Würden Sie bitte Ihre Antwort ein wenig bearbeiten? –

+0

@VikasKumar Hat die Beispielverwendung ich Hilfe hinzugefügt? – afuous

+0

Danke. Es hat geholfen! –

Verwandte Themen