как отобразить таблицу API страниц на главной странице по умолчанию - PullRequest
0 голосов
/ 04 ноября 2019

В моем приложении Node js + Ejs + Postgres мне удается создать API пагинации и отображать результаты в формате html, но я могу видеть правильные данные только при визуализации страницы и нажимаю кнопки пагинации (используя: bootstrap 4).

Мой API разбивки на страницы работает, когда я использую следующее

http://localhost:3000/?page=3&limit=2

, тогда таблица отображается успешно

Но я определил app.get ("/") и мне хотелось бычтобы увидеть таблицу с нумерацией страниц при использовании:

http://localhost:3000/

Есть ли шанс получить это?

//index.js
app.get("/", (req, res, next) => {
  pool.connect((err, client, done) => {
    const query = "SELECT * FROM weight_log order by date desc";
    client.query(query, (error, result) => {
      done();
      if (error) {
        res.status(400).json({ error });
      }
      if (result.rows < "1") {
        res.status(404).send({
          status: "Failed",
          message: "No weight information found"
        });
      } else {
        req.weight = result.rows;

        const resultWeight = req.weight;
        const page = parseInt(req.query.page);
        const limit = parseInt(req.query.limit);
        const startIndex = (page - 1) * limit;
        const endIndex = page * limit;
        const results = {};

        if (endIndex < resultWeight.length) {
          results.next = {
            page: page + 1,
            limit: limit
          };
        }

        if (startIndex > 0) {
          results.previous = {
            page: page - 1,
            limit: limit
          };
        }

        results.results = resultWeight.slice(startIndex, endIndex);
        res.render("index", {
           data: results
        });
      }
    });
  });
});
// index.ejs
<div class="container">
     <table class="table table-striped">
        <tr>
          <th>date:</th>
          <th>weight:</th>
        </tr>
        <% for(var i=0; i < data.results.length; i++) { %>
        <tr>
          <td>
            <%= data.results[i].date %>
          </td>
          <td>
            <%= data.results[i].weight %>
          </td>
        </tr>

        <% } %>
      </table>

      <ul class="pagination justify-content-center">
        <li class="page-item">
          <a class="page-link" href="/?page=1&limit=2">1</a>
        </li>
        <li class="page-item">
          <a class="page-link" href="/?page=2&limit=2">2</a>
        </li>
        <li class="page-item">
          <a class="page-link" href="/?page=3&limit=2">3</a>
        </li>
        <li class="page-item">
          <a class="page-link" href="/">main</a>
        </li>
      </ul>
    </div>
...