Express - результаты запроса mysql не отображаются - PullRequest
0 голосов
/ 16 февраля 2019

Я создаю веб-форму, где пользователь вводит серийный номер, и отображается информация об элементе с соответствующим серийным номером.

Запрос к базе данных выполнен успешно, но res.render() не отображает результаты.

app.js

//ibutton page, displayed after clicking link
app.get('/ibuttons', function (req, res){
    res.render('ibutton');
});

app.post('/ibuttons/view/', function (req, res){

let query = ('SELECT serialNum, lotNumber, dateCode, model FROM iButton WHERE serialNum = ?');
db.query(query, [req.body.serialNumber], function (err, results, fields) {
    console.log(results);
    res.render('ibutton', {
        ibuttons: results
    });

  });
});

ibutton.ejs

<% include partials/ibuttonHeader %>
<h1>iButton Information</h1>
<form method = "POST" action="/ibuttons/view">
    <label>Enter your iButton's Serial Number</label><br>
    <input type ="test" name="serialNumber">
    <input type ="submit" value="Submit">
</form>
<div>
    <table>
        <% ibuttons.forEach(function(ibutton){ %>
            <tr><%ibutton.serialNum%></tr>
            worked
        <% }) %> 
    </table>
</div>

После ввода серийного номера, который находится в базе, и нажатия кнопки «Отправить», на / ibutton / view отображается «сработало», что означает, что forEach что-то зациклилось, и консоль распечатывает результаты запроса, ноинформация не отображается на странице.

1 Ответ

0 голосов
/ 17 февраля 2019

В ibutton.ejs

<tr><%ibutton.serialNum%></tr>

должно быть

<tr><%=ibutton.serialNum%></tr>

Я забыл '=', который необходим для переменных.

...