我想从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