同一控制器中的 MERN 分页和过滤
MERN pagination and filtering in same controller
如何在同一个controller后台做分页和过滤?
过滤服务:-
const filterPosts = async (filterData, token) => {
const config = {
headers: {
Authorization: `Bearer ${token}`,
},
data: {
filterData,
},
};
const response = await axios.get(API_URL, config);
return response.data;
}
路线:-
router.route("/").get(protect, getPosts);
控制器:-
我似乎无法将 filterData 从服务发送到此控制器,如何实现?
const getPosts = asyncHandler(async (req, res) => {
console.log("filter data:- ", req.body); // This Part is undefined.
//pagination
const PAGE_SIZE = 6;
const PAGE = parseInt(req.query.page || "0");
const total = await Post.countDocuments({ user: req.user.id });
const AllPosts = await Post.find({ user: req.user.id })
.limit(PAGE_SIZE)
.skip(PAGE_SIZE * PAGE)
.sort({ createdAt: -1 });
const totalPages = Math.ceil(total / PAGE_SIZE);
res.status(200).json({ totalPages, Allposts });
});
console.log("filter data:- ", req.body);
// 这部分未定义。
您可以在 Get
请求中使用 config.params
发送此数据,如果您想使用 config.data
.
,则可以使用 Post
请求
有时 XHR / Fetch 不允许 Get
请求中的负载。
根据此 axios doc,将数据作为请求正文发送仅适用于请求方法 PUT
、POST
、DELETE
和 PATCH
.
你也可以参考这个问题:Link
const filterPosts = async (filterData, token) => {
const config = {
headers: {
Authorization: `Bearer ${token}`,
},
params: {
filterData,
},
};
const response = await axios.get(API_URL, config);
return response.data;
}
如何在同一个controller后台做分页和过滤?
过滤服务:-
const filterPosts = async (filterData, token) => {
const config = {
headers: {
Authorization: `Bearer ${token}`,
},
data: {
filterData,
},
};
const response = await axios.get(API_URL, config);
return response.data;
}
路线:-
router.route("/").get(protect, getPosts);
控制器:-
我似乎无法将 filterData 从服务发送到此控制器,如何实现?
const getPosts = asyncHandler(async (req, res) => {
console.log("filter data:- ", req.body); // This Part is undefined.
//pagination
const PAGE_SIZE = 6;
const PAGE = parseInt(req.query.page || "0");
const total = await Post.countDocuments({ user: req.user.id });
const AllPosts = await Post.find({ user: req.user.id })
.limit(PAGE_SIZE)
.skip(PAGE_SIZE * PAGE)
.sort({ createdAt: -1 });
const totalPages = Math.ceil(total / PAGE_SIZE);
res.status(200).json({ totalPages, Allposts });
});
console.log("filter data:- ", req.body);
// 这部分未定义。
您可以在 Get
请求中使用 config.params
发送此数据,如果您想使用 config.data
.
Post
请求
有时 XHR / Fetch 不允许 Get
请求中的负载。
根据此 axios doc,将数据作为请求正文发送仅适用于请求方法 PUT
、POST
、DELETE
和 PATCH
.
你也可以参考这个问题:Link
const filterPosts = async (filterData, token) => {
const config = {
headers: {
Authorization: `Bearer ${token}`,
},
params: {
filterData,
},
};
const response = await axios.get(API_URL, config);
return response.data;
}