Nodejs MySQL连接查询返回值以调用函数

我正在尝试从数据库中获取价值。用一个演示示例进行尝试。但是我在使用回调函数尝试同步调用时遇到问题。我是node.js的初学者,所以不知道这是否正确。

文件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);

文件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);

}

};

输出:

Step 1

Step 3

Data : undefined

Step 2

The solution is: 2

回答:

问题是这样的:

var r = db.demo(query, function(result) { data = result; });

console.log( 'Data : ' + data);

console.log将运行回调函数被调用之前,因为db.demo是异步的,这意味着它可能需要一些时间来完成,但所有的,而代码的下一行,console.log将被执行。

如果要访问结果,则需要等待回调函数被调用:

var r = db.demo(query, function(result) { 

console.log( 'Data : ' + result);

});

这是大多数处理I / O的代码将在Node中起作用的方式,因此了解它很重要。

以上是 Nodejs MySQL连接查询返回值以调用函数 的全部内容, 来源链接: utcz.com/qa/428788.html

回到顶部