У меня есть фон python и в настоящее время переносится на node.js. У меня проблема с настройкой 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 читаемым способом?
Я хотел бы видеть, как promises можно реализовать в этом случае с помощью bluebird.