【发布时间】:2021-07-04 16:45:37
【问题描述】:
我有一个 node.js 服务器,它在用户选择他想要查看状态的储物柜类型后查询数据库。储物柜有多种状态:殖民、非更新、免费、占用。获取这些类别中的任何一个都是通过特定请求完成的。
我想要的是,如果用户选择所有选项,能够执行所有请求并将所有行放入数组中,然后用它呈现网页。问题是异步的,```connection.query````没有按顺序返回,不知道怎么解决。
app.get('/admin/sites/lockers/*', function (req, res) {
console.log("GET /admin/sites/lockers");
let parsedQs = querystring.parse(url.parse(req.originalUrl).query);
console.log(parsedQs);
let resultArray = [];
if(parsedQs['colonised']) {
let query = fs.readFileSync('./sql/colonised_lockers.sql', 'utf8');
connection.query(query, function (err, results, fields) {
resultArray.push(results[0]);
console.log("colonized :", resultArray);
});
}
if(parsedQs['non_renewed']) {
let query = fs.readFileSync('./sql/non_renewed_lockers.sql', 'utf8');
connection.query(query, function (err, results, fields) {
resultArray.push(results[0]);
console.log("non_renewed :", resultArray);
});
}
if(parsedQs['free']) {
let query = fs.readFileSync('./sql/free_lockers.sql', 'utf8');
connection.query(query, function (err, results, fields) {
resultArray.push(results[0]);
console.log("free :", resultArray);
});
}
console.log("finally :", resultArray);
res.render('admin/lockerView.ejs', {lockers : resultArray });
});
【问题讨论】:
-
你读过关于等待等的nodejs.dev/learn/…
标签: javascript mysql node.js asynchronous