[英]How to render multiple mysql queries using node in one http request
我需要从不同的表中进行两个查询,我应该怎么做,以在新页面中输出数据。 现在它正在处理一个查询。
exports.getAllImages = function () {
return new Promise((resolve, reject) => {
con.query("SELECT * FROM products WHERE product_group='TRENCH
CONVECTORS'", function (err, result, fields) {
if (err) reject(err);
resolve(result);
});
});
}
//This is what i tried, but it does not work
router.get('/product/:id', async function(req, res, next) {
let filesFromFolder;
let allimages
database.retreaveImage(req.params.id).then(function(value) {
filesFromFolder = value;
});
database.getAllImages().then(function(value){
allimages = value;
})
res.render('product.ejs', {
productName: req.params.id,
data: filesFromFolder,
allimages: allimages
});
});
//This code works, and i am using it now
router.get('/product/:id', async function(req, res, next) {
let filesFromFolder;
database.retreaveImage(req.params.id).then(function(value) {
filesFromFolder = value;
res.render('product.ejs', {
productName: req.params.id,
data: filesFromFolder
});
});
});
我应该如何编辑代码以执行两个查询?
我不确定您是否想要从两个表中检索数据的单个查询,或者您是否想要从 2 个表中进行 2 个不同的查询……如果是第二个,您可以连接函数以获得线性数据流
//This code works, and i am using it now
router.get('/product/:id/:temp', async function(req, res, next) {
let filesFromFolder;
database.retreaveImage(req.params.id).then(function(value) {
var filesFromFolder = value;
//Using a temp function
database.retreaveTemp(req.params.temp).then(function(value_temp) {
var filesFromTemp = value_temp;
res.render('product.ejs', {
productName: req.params.id,
data: filesFromFolder,
dataTemp: filesFromTemp
});
});
});
});
当您收到来自两个查询的响应时,您需要呈现您的页面。 您可以为此使用 Promise.all() 方法。
Promise.all([
database.retreaveImage(req.params.id),
database.getAllImages()
]).then(resultArr => {
filesFromFolder = resultArr[0];
allimages = resultArr[1];
res.render("product.ejs", {
productName: req.params.id,
data: filesFromFolder,
allimages: allimages
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.