【发布时间】:2021-06-24 02:26:35
【问题描述】:
我正在尝试解决这个问题,但我似乎遗漏了一些东西。所以,我看过那个关于后端分页的视频https://www.youtube.com/watch?v=ZX3qt0UWifc,我已经在我的项目中实现了它,但是现在我在前端实现它时遇到了问题。根据该 URL(例如:“/posts?page=3&limit=5”),我的帖子显示正确,但我的分页栏有问题,即 //posts.js
function paginatedResults(model) {
return async (req, res, next) => {
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 < await model.countDocuments().exec()) {
results.next = {
page: page + 1,
limit: limit
};
}
if (startIndex > 0) {
results.previous = {
page: page - 1,
limit: limit
};
}
try {
results.results = await model.find().limit(limit).skip(startIndex).exec();
res.paginatedResults = results;
next();
} catch(e) {
res.status(500).json({ message: e.message});
}
};
}
router.get("/", paginatedResults(Post), function (req, res) {
var posts = res.paginatedResults;
res.render("posts/index", {posts: res.paginatedResults, limit: 2})
});
//index.ejs
<div class="col-sm-6">
<ul class="pagination">
<li>
<a href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li class="active"><a href="http://localhost:3000/posts?page=1&limit=2">1</a></li>
<li><a href="http://localhost:3000/posts?page=2&limit=2">2</a></li>
<li><a href="http://localhost:3000/posts?page=3&limit=2">3</a></li>
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</div>
【问题讨论】:
标签: javascript node.js pagination ejs