我得到了这个错误:
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;