我正在尝试在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);
答案 0 :(得分:1)
发生这种情况的原因是,当parseInt
无法将值转换为数字(NaN
,null
,undefined
,string
,[]
)。
这可能发生在{}
这一部分,因为parseInt(pageNo)
可能未定义。
如果需要,您可以做一些检查以将其设置为0。
更改
req.params.pageno
收件人
let pageNo=req.params.pageno;
当
let pageNo = Number.isNaN(req.params.pageno) ? 0 : req.params.pageno;
为|| 0
或未定义时,将pageNo
添加到0
到req.params.pageno
,也可以将其更改为所需的任何数字。 / p>
也许您有错字?
不应该null
req.params.pageno
成为let pageNo = req.params.pageno;
req.params.pageNo
它仅返回0。如果传递的参数为2,则返回0。不跳过已显示的行
我刚刚对其进行了测试,并使用参数2返回了5。
我不确定您想做什么,不确定要跳过多少,也许改变您的逻辑?还是代替 // capital N
let pageNo = req.params.pageNo;
,而是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 });
});