Я пытаюсь получить значение из базы данных. Попробуйте это с демонстрационным примером. Но у меня возникла проблема с синхронизацией вызовов, с использованием функции обратного вызова. Я новичок в node.js, поэтому не знаю, правильно ли это.Nodejs MySQL connection query возвращаемое значение для вызова функции
FILE 1: app.js
var data;
var db = require('./db.js');
var query = 'SELECT 1 + 1 AS solution';
var r = db.demo(query, function(result) { data = result; });
console.log('Data : ' + data);
FILE 2: db.js
var mysql = require('./node_modules/mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
});
module.exports.demo = function(queryString, callback) {
try {
connection.connect();
console.log('Step 1');
connection.query(queryString, function(err, rows, fields) {
console.log('Step 2');
if (err) {
console.log("ERROR : " + err);
}
console.log('The solution is: ', rows[0].solution);
callback(rows[0].solution);
return rows[0].solution;
});
callback();
connection.end();
console.log('Step 3');
}
catch(ex) {
console.log("EXCEPTION : " + ex);
}
};
ВЫВОД:
Именуется этот вопрос также, но оно не решить мою проблема: nodeJS return value from callback
спасибо. Его выполнение так, как должно, но я сомневаюсь, используя вышеупомянутый подход, мы можем выполнять только действия по результату, который мы получили в области функции обратного вызова, правильно ...? – Aks1357
если я хочу выполнить действие над данными после вызова функции wil it work ..? – Aks1357
Нет, это не так, но вот как работает узел. Существуют библиотеки, которые смягчают этот вид рабочего процесса, например [q] (https://github.com/kriskowal/q). – robertklep