Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo di node-mysql in una funzione

Questo è un errore comune tra i principianti di async/nodejs. Hai essenzialmente racchiuso una funzione asincrona all'interno di una funzione di sincronizzazione che scompone la natura del ciclo di eventi del nodo. L'espressione di ritorno deve essere sostituita con un callback. Vedi sotto:

// 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);
});

Per convenzione, in Nodejs passiamo sempre prima un oggetto di errore nel callback. In questo caso, poiché non c'è alcun errore da catturare, passiamo null al suo posto.