Почему результаты моего запроса не отображаются в моей таблице на Express? - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь отобразить результаты запроса SQL, вызвав API в экспрессе, но результаты не отображаются. Я могу видеть их как массив пакетов данных в консоли, но не могу отобразить их.

var express = require('express');
    var router = express.Router();

    var passport = require ('passport');

    var bcrypt = require('bcrypt');
    const saltRounds = 10;
    const mysql = require ('mysql');
    const path = require('path')

    const hbs = require('hbs');
    var bodyParser = require('body-parser');
    var urlencodedParser = bodyParser.urlencoded({ extended: false });
    var { check, validationResult } = require('express-validator/check'); 

    router.use(bodyParser.json());

   // most of body code omitted

    router.get('/tableResults',(req, res) => {
        console.log(req.session.passport.user);
        const db = require('./db_connection.js');
        var id = req.session.passport.user;

        db.query('SELECT * FROM testResults where id = ?',[id],function(error, results, fields) {  // results are displayed where the user ids match
            if(error) throw error;

             // JSON.parse(JSON.
             console.log(results);

             if ( results = null ) {
                res.redirect('/home');

             }; 
             res.render('tableResults',{
                results: results
             });
            });
    });
 <html lang="en">  // the correspontiong .hbs page to be rendered with results
    <head>
        <meta charset="utf-8">
        <title>Test Results</title>

    </head>
    <body>
      <div class="container">
        <h2>Test Results</h2>
            <button class="btn btn-success" data-toggle="modal" data-target="#testResults">Add New</button>
        <table class="table table-striped" id="mytable">
          <thead>
            <tr>
              <td> Test id</td>
              <th>Grade 1s</th>
              <th>Grade 2</th>
              <th>G3</th>
              <th>Action</th>
            </tr>
          </thead>
          <tbody>
             {{#each results}}
            <tr>
              <td>{{ test_id: results }}</td>
              <td>{{ gradeOne }}</td>
              <td>{{ gradeTwo }}</td>
              <td>{{ gradeThree }}</td>
              <td>
                <a href="javascript:void(0);" class="btn btn-sm btn-info 
        edit" data-id="{{ test_id }}" data-grade-one="{{ gradeOne }}" data- 
        grade-two="{{ gradeTwo }}" data-grade-three="{{ gradeThree }}>Edit 
        </a>
                 <a href="javascript:void(0);" class="btn btn-sm btn-danger 
        delete" data-id="{{ test_id }}">Delete</a>
              </td>
            </tr>
            {{/each}}
          </tbody>
        </table>
      </div>

Я не знаю, почему я не вижу результаты на странице, поскольку данные находятся в консоли. У меня есть jQuery CDN на моей странице layout.hbs

1 Ответ

1 голос
/ 23 мая 2019

В коде if ( results = null ) {...} вы переназначаете ('=' - оператор присваивания) значение results со значением null. Ваш console.log находится перед тем, как вы сделаете перераспределение.

Вместо этого используйте equality operator

if ( results == null ) {
  res.redirect('/home');
}; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...