为什么我不能发送id后端和删除项目findByIdAndRemove()?



我想从mongodb中删除项目。我把所有条目放到一页上。然后我使用map()将项目放到卡片上。一个Item在card中,包含编辑btn和删除btn,删除btn有id (Item .id)。我抓住这个id并发送到后端,并通过这个id删除项目,但我得到未定义的id..


const deletehandler = async (id) => {
console.log(typeof id, id) // I am getting id = string

try {
await axios.delete('/api/delete', id)
} catch (error) {
console.log(error)
} 
}
return ( ...
{
getData.map(item => {
return (
<>
<div key={item.name} className='card'>
<span className='ps-2'>{item.name}</span>

<RiDeleteBin5Line style={{cursor: 'pointer'}}
onClick={() => deletehandler(item._id)}/>

</div>
}

api/delete folder

import { getSession } from 'next-auth/react';
import db from "@/utils/db";
import User from "@/modules/User";

const handler = async (req, res) => {
console.log(req.body) // ===> here I am getting undefine 

await db.connect();
await User.findByIdAndRemove(id)
await db.disconnect(); 
res.status(200).json({ message: 'success '})
};
export default handler

与Axios .post()和Axios .put()不同,Axios .delete()的第二个参数是Axios选项,而不是请求体。要发送带有DELETE请求的请求体,您应该使用data选项。

const deletehandler = async (id) => {
console.log(typeof id, id) // I am getting id = string

try {
await axios.delete('/api/delete', { data: {id} });
} catch (error) {
console.log(error)
} 
}
https://masteringjs.io/tutorials/axios/delete