我正在嘗試使用 express 創建這個簡單的 nodejs 分頁,它適用于除第一頁之外的所有頁面。當我得到第 1 頁時,它繼續加載而沒有任何結果,我知道這是什么問題。甚至 youtube 教程都在撰寫完全相同的代碼。任何幫助表示贊賞
exports.paginatedResults = (model) => {
return async (req, res, next) => {
const page = parseInt(req.query.page) || 1;
const limit = req.query.limit * 1 || 100;
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,
}
results.results = await model.find().limit(limit).skip(startIndex).exec();
res.paginatedResults = results;
next();
}
}
}
uj5u.com熱心網友回復:
您已經在 if 塊中撰寫了 model.find,該塊不會在第一頁執行,因為 startIndex 在這種情況下將為 0。您還在 if 塊中撰寫了 next() ,因此在第一頁的情況下它不會被呼叫,這就是頁面處于加載狀態的原因。
試試這樣
exports.paginatedResults = (model) => {
return async (req, res, next) => {
const page = parseInt(req.query.page) || 1;
const limit = req.query.limit * 1 || 100;
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,
}
}
results.results = await model.find().skip(startIndex).limit(limit).exec();
res.paginatedResults = results;
next();
}
}
你也應該先使用跳過然后添加限制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457730.html
下一篇:如何將聚合用于模型?
