2 글 보임 - 1 에서 2 까지 (총 2 중에서)
-
글쓴이글
-
2023년 12월 24일 01:08 #107722
김태훈참가자<ListItem 코드>
'use client'
import Link from "next/link"
export default function ListItem({result}){ return( <div> { result.map((a, i) => { return( <div className="list-item" key={i}> <Link href={`/detail/${result[i].title}`}><h4>{result[i].title}</h4></Link> <Link href={`/detail/${result[i]._id}`} className="list-btn">✏️</Link> <span onClick={(e)=>{ fetch('/api/post/delete', { method: 'POST', body: result[i]._id }) .then(()=>{ //성공시 실행할코드 e.target.parentElement.style.opacity = 0 setTimeout(()=>{ e.target.parentElement.style.display = 'none' }, 1000) }).catch((error)=>{ //인터넷문제 등으로 실패시 실행할코드 console.log(error) }) }}>🗑️</span> <p>1월 1일</p> </div> ) }) } </div> ) }
<delete 코드>
import { connectDB } from "@/util/database" import { ObjectId } from "mongodb" import { getServerSession } from 'next-auth' import { authOptions } from '../auth/[...nextauth]'
export default async function handler(request, response){ if(request.method == 'POST'){ let session = await getServerSession(request, response, authOptions) const db = (await connectDB).db("forum") let result = await db.collection('post').findOne({ _id : new ObjectId(request.body)}) try { if(session.user.email == result.author){ await db.collection('post').deleteOne({ _id : new ObjectId(request.body)}) return response.status(200).json('complete') }else{ return response.status(500).json('error') } } catch (error) { console.error('에러 발생:', error); return response.status(500).json({ error: '서버 오류가 발생했습니다.' }); } } }
사용자 정보와 글정보를 비교해서 같다면 삭제하는 기능까진 되는데 json 문구가 나오지않고 비교한 정보가 같지 않을 때도 삭제성공시의 애니메이션이 발동됩니다 ㅠㅠ 다시 새로고침하면 삭제가 안되어있긴한데 콘솔창에는 listItem.js:15 POST http://localhost:3000/api/post/delete 500 (Internal Server Error) 이렇게 나와있고 어떻게 해결해야할지 모르겠어서 질문드립니다 ㅠㅠ
-
글쓴이글
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
- 답변은 로그인 후 가능합니다.