В моем приложении 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>