gpt4 book ai didi

javascript - 从 mysql 数据库获取数据时,node.js 流程不正确

转载 作者:行者123 更新时间:2023-11-29 08:23:06 24 4
gpt4 key购买 nike

我正在使用 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 的工作方式有关?

最佳答案

connection.query 是异步的,因此您必须使用回调函数来处理查询结果。

这是稍微修改过的代码:

API路线:

app.post('/getJson', function (req, res) {

fetchData(req.body.selectpicker, function(jsonata) {
console.log('jsonData' + jsonData);
res.render('result.ejs', {
html: '<p>' + jsonData + '</p>'
});
});
});

fetchdata 函数:

function fetchData(tableName, done)
{
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;

connection.query(query, function(err, rows, fields)
{
if (err) throw err;
console.log('The rows are: ', rows);
done(rows);
});

connection.end();
}

关于javascript - 从 mysql 数据库获取数据时,node.js 流程不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18763867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com