Todos mis archivos funcionan correctamente, pero si incluyo un db.query en mi encabezado, recibo este error cuando intento visualizar otros ejs:
ReferenceError: D:\Proyects\exampleProyect\views\exampleLayout.ejs:1 >> 1| <%- include('layouts/header.ejs', {categories:results}); %> 2| 3| <div class="container"> 4| results is not definedMi código:
índice.js
router.get('/', function(req, res, next) { db.query("SELECT * FROM categories",function(err,results){ res.render('layouts/header', { title: 'HOME', categories:results }); }); });encabezado.ejs
... <% for(var i=0;i<categories.length;i++) { %> <a href="/categories/<%=categories[i].name%>"> <%=categories.name%> </a> <% } %> ...ejemploLayout.js
router.get('/', function(req, res, next) { db.query("SELECT * FROM examples",function(err,names){ res.render('exampleLayout', { title: 'Layout',list:names }); }); });ejemploLayout.ejs
<%- include('layouts/header.ejs') %> <div class="container"> <% for(var i=0;i<list.length;i++) { %> ... <% } %> </div> El error ocurre porque tengo 2 db.query tratando de acceder a exampleLayout.ejs (primero db.query de index.js en header.ejs y el segundo de exampleLayout.js)
Si trato de incluir así:
<%- include('layouts/header.ejs') %> o <%- include layouts/header.ejs %>
Recibo otro error pero básicamente por la misma razón. Sé que mis archivos son correctos porque todo funcionaba hasta que probé esto, entonces, ¿cómo puedo tener dos db.query de dos .js diferentes en el mismo .ejs ?
Después de probar algunas formas diferentes, encontré una posible solución con este código:
<%- include('layouts/header.ejs', {categories: list}) %>ejemploLayout.ejs
<%- include('layouts/header.ejs', {categories: list}) %> <div class="container"> <% for(var i=0;i<list.length;i++) { %> ... <% } %> </div> pero no estoy seguro de si usar {categories: list} la include tiene sentido o no. Agradecería si alguien me puede explicar o mostrar la forma correcta de hacerlo.