Reputation: 183
First things first, very new to Node and express. I am trying to populate two dropdowns using two different query results. For instance, I want two dropdowns, one being date
other being name
.
I tried doing one dropdown for the date
and it worked perfectly fine. However, when I tried to do both, kept on getting this error: names is not defined
.
Router.js
const express = require('express')
const router = express.Router()
const { conn } = require('./config')
router.get('/', async (req, res) => {
try {
var dates = conn.query('select date from table', function(req, result){
console.log(result);
res.render('index', {dates : result});
});
} catch (err) {
res.status(500)
res.send(err.message)
}
});
router.get('/', async (req, res) => {
try {
var names = conn.query('select name from table2', function(req, result){
console.log(result);
res.render('index', {names : result});
});
} catch (err) {
res.status(500)
res.send(err.message)
}
});
Index.ejs
<div class="Date_Dropdown">
<span class="caret"></span></button>
<ul class="dropdown-menu">
<% for(var i=0; i < dates.recordset.length; i++) { %>
<li><%= dates.recordset[i].Date%></li>
<% } %>
</ul>
</div>
<div class="Name_Dropdown">
<span class="caret"></span></button>
<ul class="dropdown-menu">
<% for(var n=0; n < names.recordset.length; n++) { %>
<li><%= names.recordset[n].Name%></li>
<% } %>
</ul>
</div>
App.js
app.use('/', router);
I am trying to achieve two drop down menus, one for date and one for names, and it keeps on throwing this error:
names is not defined
at eval (eval at compile (), <anonymous>:20:25)
at returnedFn ()
at tryHandleCache ()
at View.exports.renderFile [as engine] (Desktop\Node\node_modules\ejs\lib\ejs.js:482:10)
at View.render (Desktop\Node\node_modules\express\lib\view.js:135:8)
at tryRender (Desktop\Node\node_modules\express\lib\application.js:640:10)
at Function.render (Desktop\Node\node_modules\express\lib\application.js:592:3)
at ServerResponse.render (Desktop\Node\node_modules\express\lib\response.js:1008:7)
at Desktop\Node\model\router.js:25:13
at _query (Desktop\Node\node_modules\mssql\lib\base.js:1347:9)
Upvotes: 0
Views: 47
Reputation: 48250
Two functions to handle the very same /
route won't work. Just have one and this inside
...
try {
var dates = await conn.query('select date from table');
var names = await conn.query('select name from table2')'
res.render( 'index', {dates : dates, names: names} );
}
Upvotes: 1