gpt4 book ai didi

javascript - 返回查询数据以在 ejs Node js 中呈现

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

我正在从 mysql 数据库中检索数据,我需要发送数据以在我的 ejs 文件中呈现。

router.get('/', function(req, res, next) {
res.render('index', { speedAccelData: getSpeedAccelData() });
});

module.exports = router;

以下是我用来从数据库中获取数据的函数。它成功地打印了包含所需数据的 jsonStr。我需要从函数返回 jsonStr

var getSpeedAccelData = function () {

var jsonStr;

var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "db_name"
});

con.connect(function(err){
if(err){
console.log('Error connecting to Db');
return;
}
});

con.query('SELECT * FROM table_name',function(err, result){
if(err) throw err;
jsonStr = JSON.stringify(result)
console.log(jsonStr);
});
con.end();

};

如何返回要呈现的查询数据?

最佳答案

您可以使用 Promise实现这一点

var getSpeedAccelData = function () {

var promise = new Promise(function (resolve, reject) {

var jsonStr;

var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "db_name"
});

con.connect(function(err){
if(err){
console.log('Error connecting to Db');
reject();
}
});

con.query('SELECT * FROM table_name',function(err, result){
if(err) {
reject(err);
} else {
jsonStr = JSON.stringify(result)
resolve(jsonStr);
}

});

con.end();

});

return promise;
};

然后在你的 Controller 中你可以这样进行:

router.get('/', function(req, res, next) {
getSpeedAccelData()
.then(function success(result) {
res.render('index', { speedAccelData: result });
}, function error(error) {
...
});
});

关于javascript - 返回查询数据以在 ejs Node js 中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38891417/

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