Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utiliser node-mysql dans une fonction

C'est une erreur courante chez les débutants async/nodejs. Vous avez essentiellement enveloppé une fonction asynchrone dans une fonction de synchronisation qui décompose la nature de la boucle d'événement du nœud. L'expression de retour doit être remplacée par un rappel. Voir ci-dessous :

// Method
function getUserInfo (userID, dynamicField, callback) {
    var query = connection.query('SELECT '+dynamicField+' from users WHERE userID = '+connection.escape(userID));
    query.on('result', function(row) {
        callback(null, row.dynamicField);
    });
};

// Implementation
getUserInfo(8, userEmail, function(err, result){
    console.log(err || result);
});

Par convention, dans Nodejs, nous passons toujours un objet d'erreur en premier dans le rappel. Dans ce cas, puisqu'il n'y a pas d'erreur à capturer, nous passons null à sa place.