Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie bekomme ich die Ergebnisse von nodejs mit dem mysql-Paket?

Da node.js nicht blockierend und asynchron ist, dann in diesem Code:

client.query("SELECT * FROM users", function (error, results, fields) {
    if (error) {
        //
    }
    if (results.length  > 0) {
        self.users = results;
    }
});

console.log(this.users);

Daten aus DB werden wahrscheinlich noch nicht in die Benutzervariable geladen, wenn Sie versuchen, sie in die Konsole einzuloggen. Sie können es überprüfen, wenn Sie Ihre console.log erstellen Operation innerhalb der Abfrage, zum Beispiel:

client.query("SELECT * FROM users", function (error, results, fields) {
    if (error) {
        //
    }
    if (results.length  > 0) {
        console.log(results);
    }
});

Um das Ergebnis an eine Variable zu übergeben, wenn die Operation abgeschlossen ist, können Sie Ihren Client-DB-Aufruf in eine Funktion mit Callback-Parameter umschließen und Ihre Variable setzen, wenn der Callback aufgerufen wird, zum Beispiel:

function query(sql, callback) {
    client.query(sql, function (error, results, fields) {
        if (error) {
            //
        }
        if (results.length  > 0) {
            callback(results);
        }
    });
}

query("SELECT * FROM users", function(results) {
    self.users = results;
    console.log(self.users);
});

Der obige Code ist nur ein Konzept.