Причина, по которой это происходит, заключается в том, что parseInt
возвращает NaN
, когда вы не можете преобразовать это значение в число (null
, undefined
, string
, []
, {}
).
И, вероятно, это происходит в этой части parseInt(pageNo)
, потому что req.params.pageno
, вероятно, не определено.
Что вы можете сделать, это сделать некоторую проверку, чтобы сделать его 0, если хотите.
Изменить
let pageNo=req.params.pageno;
До
let pageNo = Number.isNaN(req.params.pageno) ? 0 : req.params.pageno;
Добавление || 0
приведет к pageNo
к 0
, если req.params.pageno
равно null
или undefined`, вы также можете изменить его на любое число.
Edit:
Может быть, у вас есть опечатка?
Не должен req.params.pageno
let pageNo = req.params.pageno;
Be req.params.pageNo
// capital N
let pageNo = req.params.pageNo;
Редактировать 2:
просто возвращает 0. Если переданный параметр равен 2, возвращает 0.не пропуская уже показанные строки
Я только что проверил, и с параметром 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);