¿Cómo puedo hacer que esto funcione?
Creo que debería usar promesas pero no tengo mucho conocimiento sobre ellas. He leído sobre ellos, pero no pude crear la estructura como se supone que debe hacerlo.
Simplemente quiero ejecutar dos consultas diferentes en la misma tabla y usar los valores devueltos en el mismo archivo ejs
app.get('/', (req, res) => { db.query('SELECT COUNT(*) AS count, FORMAT(SUM(donation_amount),2) AS total FROM donations;', (err, result) => { if (err) throw err; let count = result[0].count; //since query column is requested as "count". we can use "count" to get back the raw value let total = result[0].total; res.render('home', { count: count, total: total }); // just the file name is enough. ejs engine looks up the file name in the "views" folder }); db.query('SELECT CONCAT(first_name, ", ", last_name AS latest_donator, donation_amount AS amount FROM donations ORDER BY donation_time LIMIT 1;', (err, result) => { if (err) throw err; let donatorName = result[0].latest_donator; let amount = result[0].amount; res.render('home', {first_name: donatorName, amount: amount}); }); });Solo puede enviar la respuesta ( res.render(...) ) una vez que tenga el resultado de ambas consultas. Por lo tanto, es posible que desee hacerlo secuencialmente de esta manera.
app.get('/', (req, res) => { db.query('SELECT COUNT(*) AS count, FORMAT(SUM(donation_amount),2) AS total FROM donations;', (err, result) => { if (err) throw err; let count = result[0].count; //since query column is requested as "count". we can use "count" to get back the raw value let total = result[0].total; db.query('SELECT CONCAT(first_name, ", ", last_name AS latest_donator, donation_amount AS amount FROM donations ORDER BY donation_time LIMIT 1;', (err, result) => { if (err) throw err; let donatorName = result[0].latest_donator; let amount = result[0].amount; res.render('home', { first_name: donatorName, amount: amount, count: count, total: total }); }); }); });Pero las consultas son independientes entre sí, por lo que podría ejecutarlas en paralelo.