connection.query
- это асинхронный метод, переместите логику рендеринга в функцию.Попробуйте это,
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function (req, res, next) {
var mysql = require('mysql')
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'Abcd1234',
database: 'mtest'
});
connection.connect()
connection.query('SELECT name from catalog_product_flat_1', function (err, rows, fields) {
if (err) throw err
let products = rows[0].name;
console.log('Product is: ', products)
res.render(
'product', { products: global.products, title: 'abc' }
);
connection.end()
})
});
module.exports = router;
А также, как упомянуто ниже @Raghav Garg, подключение к базе данных при каждом запросе может быть не идеальным (или может быть идеальным, если этот запрос не вызывается часто, поэтому вы нене хотите поддерживать связь с базой данных, зависит от ваших требований).Но я считаю, что это еще одна оптимизация производительности, которая не относится к вашему вопросу.