Шаблонный движок устанавливает мой код в неправильном месте.В чем ошибка? - PullRequest
0 голосов
/ 26 июня 2019

Шаблонный движок устанавливает мой код в неправильном месте вплоть до заголовка таблицы. Это успешно устанавливает простой строковый объект, но это устанавливает мои строки таблицы абсолютно неправильно.

app.js

app.get("/", function(req,res) {

    const collection = req.app.locals.collection;
    collection.find({}).toArray(function(err, messages) {

        participants = Analise(messages, collection);
        console.log(participants);

        if(err) return console.log(colors.red(err));

        res.render("main.hbs", {
            title: "tg:analitycs",
            captition: "Таблица пользователей",
            cap: "",
            table: genTable(participants),
        });
    });
});

function genTable(p) {
    let rows = '';
    for (let i=0; i<p.length; i++) {

        rows += "<tr><th>"+p[i].id+"</th><th>"+p[i].first_name+"</th><th>"+p[i].last_name+"</th><th>"+p[i].username+"</th><th>"+p[i].total+"</th><th>"+p[i].type_text+"</th><th>"+p[i].type_image+"</th></tr>";
    }
    return rows;
}

main.hbs

<body>
    {{> header}}
    <div class="container">
        <div class="test_container">
            <ul>
                <li>{{captition}}</li>
                <li>{{cap}}</li>
            </ul>
            <table>
                <tr>
                    <th>user_id</th>
                    <th>First name</th>
                    <th>Last name</th>
                    <th>Username</th>
                    <th>total messages</th>
                    <th>text</th>
                    <th>images</th>
                </tr>
                {{table}} <!---------- MUST BE HERE ----------->
            </table>
        </div>
    </div>
    {{> footer}}
</body>

вывод скриншота по ссылке: https://jonarhipov.neocities.org/screenshots/Screenshot%202019-06-26%20at%2015.57.57.png

Где ошибка или ошибка? Спасибо!

P.S .: Как лучше всего визуализировать таблицу? Я хочу:

  • отсортировать по столбцу
  • отображает часть всех данных.

Я не хочу добавлять строки, удалять строки, менять строки. Только таблица вывода.

1 Ответ

0 голосов
/ 28 июня 2019

Прежде всего, отправьте все данные коллекции в переменной на html-страницу, например:

    res.render("main.hbs", {
        title: "tg:analitycs",
        captition: "Таблица пользователей",
        cap: "",
        user_data: participants
    }); 

Тогда таблица должна выглядеть следующим образом:

 <table>
    <thead>
        <tr>
            <th>user_id</th>
            <th>First name</th>
            <th>Last name</th>
            <th>Username</th>
            <th>total messages</th>
            <th>text</th>
            <th>images</th>
        </tr>
    </thead>

    <tbody>
        <tr>
        {% for data in user_data %}
            <td>{{data.id}}</td>
            <td>{{data.first_name}}</td>
            ...
            ...

        </tr>
        {% endfor %}
    </tbody>
 </table>
...