Ho uno sfondo pitone e sto attualmente migrando su node.js. Ho problemi con l'adattamento a node.js a causa della sua natura asincrona.Utilizzare la promessa per elaborare il valore di ritorno MySQL in node.js
Ad esempio, sto cercando di restituire un valore da una funzione MySQL.
function getLastRecord(name)
{
var connection = getMySQL_connection();
var query_str =
"SELECT name, " +
"FROM records " +
"WHERE (name = ?) " +
"LIMIT 1 ";
var query_var = [name];
var query = connection.query(query_str, query_var, function (err, rows, fields) {
//if (err) throw err;
if (err) {
//throw err;
console.log(err);
logger.info(err);
}
else {
//console.log(rows);
return rows;
}
}); //var query = connection.query(query_str, function (err, rows, fields) {
}
var rows = getLastRecord('name_record');
console.log(rows);
Dopo un po 'di lettura fino, mi rendo conto il codice di cui sopra non può lavorare e ho bisogno di tornare una promessa a causa della natura asincrona di node.js. Non riesco a scrivere codice node.js come python. Come faccio a convertire getLastRecord()
per restituire una promessa e come gestisco il valore restituito?
In effetti, quello che voglio fare è qualcosa del genere;
if (getLastRecord() > 20)
{
console.log("action");
}
Come può essere fatto in node.js in modo leggibile?
Mi piacerebbe vedere come le promesse possono essere implementate in questo caso usando bluebird.
Oh, e se usi le promesse, considera bluebird! un numero di simpatici aiutanti, perfetti ben compresi ormance, ecc. –
Se uso bluebird, posso utilizzare la funzione 'getLastRecord()' e fare qualcosa come 'Promisify (getLastRecord)' e 'getLastRecord()' supporta la promessa? – user781486
Penso che http://bluebirdjs.com/docs/api/promise.fromcallback.html sia quello che desideri –