我正在尝试在nodejs中分页。而乘法它返回 Nan 。我尝试了 parseInt ,没有用。下面是我的代码
router.route('/imagecard/get/paginate/:pageno').get((req, res) => {
let perpage=5;
let pageNo=req.params.pageno;
let query={};
query.skip= parseInt( perpage )* (parseInt(pageNo) -1);
console.log(parseInt( perpage ) * (parseInt(pageNo)-1));
console.log(query.skip);
query.limit= perpage;
ImageCard.find({}, {}, query, (err, data) => {
if (err) {
res.json({ "error": true, "message": "error fetching data" });
} else {
res.json(data);
}
}).sort({ "name": 1 });
});
该特定行返回 Nan
query.skip= parseInt( perpage )* (parseInt(pageNo) -1);
即使我尝试过这个
query.skip = perpage * (pageNo - 1);
最佳答案
发生这种情况的原因是,当您无法将该值转换为数字时,parseInt
返回 NaN
(null
、未定义
、字符串
、[]
、{}
)。
可能会发生在这部分parseInt(pageNo)
,因为req.params.pageno
可能未定义。
如果您愿意的话,您可以做一些检查以将其设为 0。
改变
let pageNo=req.params.pageno;
至
let pageNo = Number.isNaN(req.params.pageno) ? 0 : req.params.pageno;
Adding
|| 0
will makepageNo
to0
whenreq.params.pageno
isnull
or undefined`, you can also change it to any number you want.
编辑:
也许你打错字了?
不应该req.params.pageno
let pageNo = req.params.pageno;
为req.params.pageNo
// capital N
let pageNo = req.params.pageNo;
编辑2:
it just returns 0 .if the passed parameter is 2 ,returns 0.not skipping the already shown rows
我刚刚测试了它,使用参数 2,它返回 5。
我不确定你想做什么,不确定你想跳过多少,也许改变你的逻辑?或者不是0
,而是1
?现在您需要看看您有什么要求来解决这种情况。
完整代码
router.route('/imagecard/get/paginate/:pageno').get((req, res) => {
let perpage=5;
let pageNo = Number.isNaN(req.params.pageno) ? 0 : req.params.pageno;
let query={};
query.skip = parseInt( perpage )* (parseInt(pageNo) -1);
console.log(parseInt( perpage ) * (parseInt(pageNo)-1));
console.log(query.skip);
query.limit = perpage;
ImageCard.find({}, {}, query, (err, data) => {
if (err) {
res.json({ "error": true, "message": "error fetching data" });
} else {
res.json(data);
}
}).sort({ "name": 1 });
});
工作片段
let reqParamsPageno = 2
console.log('req.params.pageno', reqParamsPageno)
let perpage = 5;
let pageNo = reqParamsPageno;
let query = {};
query.skip = parseInt(perpage) * (parseInt(pageNo) -1);
query.limit = perpage;
console.log('query', query);
关于node.js - 在nodeJs中执行乘法时返回Nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56753546/