У меня есть фон python и в настоящее время выполняется переход на node.js. У меня проблема с настройкой node.js из-за его асинхронного характера.Используйте обещание обработать возвращаемое значение MySQL в node.js
Например, я пытаюсь вернуть значение из функции 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);
После некоторого чтения, я понимаю, что приведенный выше код не может работать, и мне нужно, чтобы вернуть обещание из-за асинхронной природы Node.js-х годов. Я не могу написать node.js-код, например python. Как мне преобразовать getLastRecord()
, чтобы вернуть обещание и как обработать возвращаемое значение?
Фактически, то, что я хочу сделать, это нечто подобное;
if (getLastRecord() > 20)
{
console.log("action");
}
Как это можно сделать в node.js читаемым способом?
Я хотел бы видеть, как обещания могут быть реализованы в этом случае с использованием синей птицы.
О, и если вы используете обещания, рассмотрите bluebird! ряд хороших помощников, хорошо понятый пер ormance и т. д. –
Если я использую bluebird, могу ли я использовать функцию getLastRecord() 'и делать что-то вроде' Promisify (getLastRecord) 'и' getLastRecord() 'поддерживает обетование? – user781486
Я думаю, что http://bluebirdjs.com/docs/api/promise.fromcallback.html - это то, что вы хотите –