caitlinp
caitlinp

Reputation: 183

Passing data into a dropdown from a query in MSSQL

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

Answers (1)

Wiktor Zychla
Wiktor Zychla

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

Related Questions