我正在嘗試使用 Node.js 和 Express 進行分頁,如果slug <= 0, slug = 1.
new(req, res, next) {
let perPage = 16;
//let page = req.params.page <= 0 ? 1: req.params.page; //This work
let page = req.params.page || 1; //BUT this NOT work, please explain for me
Product
.find()
.skip((perPage * (page - 1)))
.limit(perPage)
.exec((err, products) => {
Product.countDocuments((err, count) => {
if (err) return next(err);
res.render('product/index_product', {
products,
current: page,
pages: Math.ceil(count / perPage)
});
});
});
}
我用||運營商解決了,但是不行,不知道為什么。
uj5u.com熱心網友回復:
在 page 為 0 的情況下,查詢字串引數被決議為strings。
req.params.page <= 0 ? 1之所以'0'有效,是因為按字典順序確實是<= 0(當0右側被隱式強制為 時'0')。
console.log('0' <= 0);
但'0'不是假的,所以
let page = req.params.page || 1;
是
let page = '0' || 1;
let page = '0'
首先將頁面轉換為數字。
const paramPage = Number(req.params.page);
const page = paramPage || 1;
在頁面存在的情況下負,let page = req.params.page || 1是沒有意義呢-負數是truthy了。如果您的代碼中有這種可能性,那么您的原始方法
const page = req.params.page <= 0 ? 1:
是最好的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/366576.html
標籤:javascript 节点.js 表达
