NodeJS: Как назначить результат запроса в переменную и использовать его для заполнения таблицы HTML? - PullRequest
0 голосов
/ 20 ноября 2018

Я занимаюсь практикой NodeJS и Express уже несколько дней.Я хочу вернуть результат запроса и назначить его в HTML-таблицу в NodeJS.Вот что я сделал:

//My controller
exports.mainpage = function(req,res){
        sql = "SELECT * from students";
        var qry = db.query(sql,function (err, result) {
            if (err) throw err;
            return result;
        });
        console.log(qry);
        res.render('layouts/main', qry);
    }

Маршруты:

router.get('/', student_controller.mainpage);

HTML (с использованием рулей):

<table class="table">
    <thead>
      <tr>
        <th>#</th>
        <th>Name</th>
        <th>Gender</th>
        <th>DOB</th>
      </tr>
    </thead>
    <tbody>
    {{#each qry}}
     <td>1</td>
     <td>{{this.name}}</td>
     <td>{{this.gender}}</td>
     <td>{{this.dob}}</td>
    {{/each}}
    </tbody>
  </table>

Я получаю так много ошибок.Я думаю, мой код неверен.Пожалуйста, помогите мне исправить этот код.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Я предполагаю, что вы не получаете результаты в вашем объекте результата.Это потому, что вам нужно подождать, пока результаты будут возвращены, прежде чем делать рендеринг.Попробуйте что-то вроде следующего:

exports.mainpage = function(req,res){
        sql = "SELECT * from students";       
        db.query(sql)
        .then(result => res.render('layouts/main', result);
        .catch(error => console.log(error) //put your error handler here
        
        
    }
0 голосов
/ 20 ноября 2018

Какие ошибки вы получаете?

Я отвечу на самую очевидную проблему, не зная всех ваших ошибок:

Самая очевидная проблема - это выникогда не определяйте resultqry в вашем контроллере.

Вы присваиваете результат вашего запроса к базе данных переменной qry, но затем отправляете неопределенную и необъявленную переменную resultqry в свой шаблон.

Вместо var qry = используйте var resultqry=

var resultqry = db.query(sql,function (err, result) {
    if (err) throw err;
    return result;
});
console.log(resultqry);
res.render('layouts/main', resultqry);
...