【发布时间】:2013-09-16 19:35:30
【问题描述】:
我正在使用 Node.js、Express 和 EJS 开发一个小程序。
基本上我有一个post api路由如下:
app.post('/getJson', function (req, res) {
var jsonData = fetchData(req.body.selectpicker);
console.log('jsonData' + jsonData);
res.render('result.ejs', {
html: '<p>' + jsonData + '</p>'
});
});
fetchdata 函数执行以下操作:
function fetchData(tableName)
{
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'xxxx',
user : 'xxxx',
password : 'xxxx!',
database : 'xxxxx',
port : 'xxxx'
});
connection.connect(function(err) {
console.log('error' + err);
// connected! (unless `err` is set)
});
var query = "SELECT * FROM " + tableName;
var data = [];
connection.query(query, function(err, rows, fields)
{
if (err) throw err;
data = rows;
console.log('The rows are: ', rows);
});
connection.end();
console.log('datsa' + data);
return data;
}
但我的问题是,当 connection.query 首次运行时,它不会进入回调函数,而是直接进入 connection.end()。但是在它退出 fetchData 函数之后,它会继续运行回调函数,该函数返回查询后的行?
有什么想法吗?
我认为这可能与 api 的工作方式有关?
【问题讨论】:
-
node js 是一个事件驱动的编程,所以它遵循事件的顺序
标签: javascript mysql node.js