Я пытаюсь реализовать функцию удаления в своем приложении MERN, но всякий раз, когда я пытаюсь отправить свой delete IDs
на серверный контроллер, Delete ID Array
не определен
deletePosts
— это массив ID для удаления deletePosts = [id1, id2, id3 ...]
Компонент React Posts: -
function AllPosts() {
const dispatch = useDispatch();
const { posts, isSuccess } = useSelector((state) => state.posts);
const handleDelete = () => {
dispatch(deletePost({deletePosts}));
};
return (
<>
{posts.map((post, index) => (
<Post
postId={post._id}
subject={post.subject}
handleDelete={handleDelete}
/>
))}
</>
)}
export default AllPosts;
Срез набора инструментов Redux: -
export const deletePost = createAsyncThunk(
"posts/delete",
async (postDelete, thunkAPI) => {
try {
const token = JSON.parse(localStorage.getItem("token"));
return await postService.deletePost(postDelete, token);
} catch (error) {
const message =
(error.response &&
error.response.data &&
error.response.data.message) ||
error.message ||
error.toString();
return thunkAPI.rejectWithValue(message);
}
}
);
Сервис набора инструментов REDUX: -
const deletePost = async (postDelete, token) => {
const config = {
headers: {
Authorization: `Bearer ${token}`,
},
};
const response = await axios.delete(API_URL, postDelete, config);
return response.data;
};
МАРШРУТ:-
router.route("/").delete(protect, deletePost)
КОНТРОЛЛЕР:-
const deletePost = asyncHandler(async (req, res) => {
console.log("Delete Controller:- ", req.body);
/****
*
* Delete Logic
*
*
*/
});
КОНТРОЛЛЕР console.log: -
Delete Controller:- {}
Данные передаются из Component > Slice > Service > Route > Controller
the deletePosts array has content of Ids till REDUX toolkit Service
но в контроллере показывает Undefined
Возможно, это решит вашу проблему:
const deletePost = async (postDelete, token) => {
const config = {
headers: {
Authorization: `Bearer ${token}`,
},
data:{
postDelete
}
};
const response = await axios.delete(API_URL, config);
return response.data;
};
Также вы отправляете свое удаление как объект, если это не предназначено, измените следующее в своем компоненте реагирования на сообщения
const handleDelete = () => {
dispatch(deletePost(deletePosts)); // ({deletePosts}) will give you an object of deleted posts in the destination instead of an array
};
да, это сработало, спасибо, и да, deletePosts не предназначался как объект.