게시판 삭제버튼 구현하실때 DELETE 메서드를 사용하셔서 통신하셨는데
제가 시도해봤을땐 서버측 에러만 발생하고 클라이언트 서버 모두 POST를 사용해야
통신이 가능했습니다.
타입스크립트를 사용했고 result변수를 제외하면 타입지정을 하지않았는데 그게 영향이 있는건지..
현재 POST로 변경했을때는 정상동작하네요..
POST가 주고받는 메서드로 알고있는데 POST를 사용해서 해결할 수 있는 문제면 굳이 DELETE를 사용하는건지
성능적인 부분이나 다른 특정 무언가가 있을지 궁금합니다.
../del.ts
import {connectDB} from "@/util/database";
import { NextApiRequest, NextApiResponse } from "next";
import { ObjectId } from "mongodb";
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method == 'POST') {
try {
let db = (await connectDB).db('forum')
const body = JSON.parse(req.body)
let result = await db.collection('post').deleteOne({
_id : new ObjectId(body._id)
});
console.log('result',result)
}
catch (error) {
res.status(500).end();
}
return res.status(200).end();
}
}
../notice
'use client'
import Link from "next/link";
export default function NoticeItem({result}) {
return (
<div>
{
result.map((noticeItem, noticeIndex) => {
return (
<div className="list-item" key={noticeIndex}>
<Link href={'/notice/' + result[noticeIndex]._id}>
<h4>{result[noticeIndex].title}</h4>
</Link>
<Link href={'/edit/' + result[noticeIndex]._id}>수정</Link>
<span onClick={() => {
fetch('/api/post/delete', {
method: 'POST',
body: JSON.stringify( {
_id : result[noticeIndex]._id
})
}).then(response => {
if (response.ok) {
window.location.href = '/notice';
}
});
}}>삭제</span>
<p>{result[noticeIndex].content}</p>
</div>
);
})
}
</div>
);
}