gpt4 book ai didi

sql - 在nodejs中,如何运行SQL查询以便在渲染页面之前准备好数据?

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:29 26 4
gpt4 key购买 nike

我正在尝试运行三个 SQL 查询来获取要推送到浏览器的数据。我是 Nodejs 和 Express 的新手(不到一周),所以我可能没有一些关于如何解决此类问题的基本概念。解决方案可能是非常基本的东西。

无论如何,我将分享我的代码,描述我想要发生的事情,然后描述实际发生的情况,并附上一些关于我认为出错的地方的注释。

app.get("/", function(request, response) {
var rock_query = "SELECT COUNT(*) AS number FROM Votes WHERE shape_id = 1;";
var paper_query = "SELECT COUNT(*) AS number FROM Votes WHERE shape_id = 2;";
var scissors_query = "SELECT COUNT(*) AS number FROM Votes WHERE shape_id = 3;";
pool.query(rock_query, function(err, res) {
if(err) {
return console.error('error running query', err);
}
rock = res.rows[0].number;
console.log("Rock votes: " + rock);
});
pool.query(paper_query, function(err, res) {
if(err) {
return console.error('error running query', err);
}
paper = res.rows[0].number;
console.log("Paper votes: " + paper);
});
pool.query(scissors_query, function(err, res) {
if(err) {
return console.error('error running query', err);
}
scissors = res.rows[0].number;
console.log("Scissors votes: " + scissors);
});
response.render("home", {
rock: rock,
paper: paper,
scissors: scissors,
});
});

我试图做到这一点,以便当我访问主页时,运行查询来计算每个形状的票数,将每个形状的计数写入控制台,推送数据,以便在页面呈现时显示票数。

当我进入主页时,它会在页面呈现时显示每个形状的全零。控制台显示每个形状的计票数。我发现,由于 Nodejs 中的代码是异步运行的,因此页面会在查询完成之前呈现。

我不确定应该如何重写上面的代码以在渲染页面之前完成查询。帮忙?

最佳答案

您可以使用此代码:

pool.query(rock_query, function(err, res) {
if(err) {
console.error('error running query', err);
}
rock = res.rows[0].number;
console.log("Rock votes: " + rock);
pool.query(paper_query, function(err, res) {
if(err) {
console.error('error running query', err);
}
paper = res.rows[0].number;
console.log("Paper votes: " + paper);
pool.query(scissors_query, function(err, res) {
if(err) {
console.error('error running query', err);
}
scissors = res.rows[0].number;
console.log("Scissors votes: " + scissors);
response.render("home", {
rock: rock,
paper: paper,
scissors: scissors,
});
});
});

});

关于sql - 在nodejs中,如何运行SQL查询以便在渲染页面之前准备好数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44092598/

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