";跳过";值给出错误,默认返回负值



我得到了这个错误:

MongoServerError:跳过值必须为非负,但已收到:9223372036854775808

路由器请求:

router.post("/products/by/search", listBySearch);

产品控制器中的listBySearch方法:

exports.listBySearch = (req, res) => {
let order = req.body.order ? req.body.order : "desc";
let sortBy = req.body.sortBy ? req.body.sortBy : "_id";
let limit = req.body.limit ? parseInt(req.body.limit) : 100;
let skip = parseInt(req.body.skip);
let findArgs = {};
// console.log(order, sortBy, limit, skip, req.body.filters);
// console.log("findArgs", findArgs);
for (let key in req.body.filters) {
if (req.body.filters[key].length > 0) {
if (key === "price") {
// gte - greater than price [0-10]
// lte - less than
findArgs[key] = {
$gte: req.body.filters[key][0],
$lte: req.body.filters[key][1]
};
} else {
findArgs[key] = req.body.filters[key];
}
}
}
Product.find(findArgs)
.select("-photo")
.populate("category")
.sort([
[sortBy, order]
])
.skip(skip)
.limit(limit)
.exec((err, data) => {
if (err) {
console.log(err);
return res.status(400).json({
error: "Products not found"
});
}
res.json({
size: data.length,
data
});
});
};

正如您在评论中所述,当req.body(即skip = parseInt(undefined),即NaN(中没有传递skip的值时,就会出现此问题。

相反,尝试设置默认跳过值0:

let skip = parseInt(req.body.skip) || 0;

最新更新