Galera tem uma página ejs estática, porém queria deixar ela dinâmica trazendo dados do banco de dados MySQL.
Queria fazer uma função no módulo “funcoes.js”, nessa função eu faço uma consulta no banco MySQL, gravo o resultado numa variável e retorno ela:
//Arquivo funcoes.js
module.exports = {
getTabela() {
//Variável que vai receber dados da consulta
data = {};
//Select
let sql = "SELECT * FROM tb_sobre";
//Executando a consulta
db.query(sql, (err, results, fields) => {
//Se consulta ok
if (results.length > 0) {
//Armazena dados da consulta na variável data
data = results;
//Se a consulta não for ok
} else {
console.log('Erro: ' + err);
}
});
//Retorna variável data com dados da conulta
return data;
},
}
Ao usar essa consulta no trecho da rota que faz o render deve passar como parâmetro para a página os dados:
//Importo o múdulo funcoes
const funcao = require('./funcoes');
module.exports = {
//Rota que faz o render
pageSite: (req, res, next) => {
res.render('./site/index.ejs', {
dados: funcao.getTabela()//Aqui deveria passar os dados
});
},
};
E lá no index.ejs recebo o dado passado pelo render:
<!-- Título -->
<div class="wow fadeInUp" data-wow-duration="1s" data-wow-delay="300ms">
<h2><%= dados.titulo %></h2><!-- Aqui recebo um campo -->
</div>
Está vindo em branco.
Toda minha página está rodando ok, minhas rotas estão ok, acesso e consulta ao MySQL ok.
Só não estou conseguindo fazer essa forma de popular a página dinamicamente com dados vindo do MySQL.
Se eu dou um console.log para ver o que está retornando a função, me retorna:
data: [object Object]
Como faço para este objeto retornar um array ou um json por exemplo usando essas mesas estruturas ai em cima pra eu popular meu ejs?