执行乘法时,在nodeJs中返回Nan

时间:2019-06-25 11:58:35

标签: node.js reactjs mongoose pagination

我正在尝试在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);

1 个答案:

答案 0 :(得分:1)

发生这种情况的原因是,当parseInt无法将值转换为数字(NaNnullundefinedstring[])。

enter image description here

这可能发生在{}这一部分,因为parseInt(pageNo)可能未定义。

如果需要,您可以做一些检查以将其设置为0。

更改

req.params.pageno

收件人

let pageNo=req.params.pageno;
  

let pageNo = Number.isNaN(req.params.pageno) ? 0 : req.params.pageno; || 0或未定义时,将pageNo添加到0req.params.pageno,也可以将其更改为所需的任何数字。 / p>

编辑:

也许您有错字?

不应该null

req.params.pageno

成为let pageNo = req.params.pageno;

req.params.pageNo

编辑2:

  

它仅返回0。如果传递的参数为2,则返回0。不跳过已显示的行

我刚刚对其进行了测试,并使用参数2返回了5。

enter image description here

我不确定您想做什么,不确定要跳过多少,也许改变您的逻辑?还是代替 // 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 });

});