• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Next.js 게시판 게시판 수정기능 만들기 2 중에 발생한 에러..?

게시판 수정기능 만들기 2 중에 발생한 에러..?

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #117300

    김동아
    참가자
    /app/edit/[id]/page.js
    
    이 코드는 수정페이지에 대한 코드입니다.
    
    import { connectDB } from "@/util/database"
    import { ObjectId } from "mongodb"
    export default async function Edit(props){
    const db=(await connectDB).db("forum")
    //db에 있는 글 하나를 가져오고 싶을때 -> findOne()
    let result= await db.collection('post').findOne({ _id:new ObjectId(props.params.id)})
    //db에 있는 글 하나를 수정하고 싶을때
     
    console.log(result)
    return(
    <>
    <h3>글 수정</h3>
    <form action="/api/post/fix" method="POST">
     
    <input name="title" defaultValue={result.title}></input> {/* value=> input에 미리 입력된 값 */}
    <input name="content" defaultValue={result.content}/>
    <input name="id" style={{display:'none'}} defaultValue={result._id.toString()} /> {/* 서버한테 보낼 수정하고 싶은 글의 id*/}
    <button type="submit">버튼</button>
    </form>
    </>
     )
    }
    
    /api/post/fix.js
    
    
    import { connectDB } from "@/util/database"
    import { ObjectId } from "mongodb"
    export default async function handler(req,res){
    if(req.method=='POST'){
    // console.log("hi",req.body)
    let change= {title:req.body.title,content:req.body.content}
    //수정할때도 바뀐내용이 없다면 기존 값 그대로.
    // 바꼈다면 바뀐내용으로 수정되도록.
     
    const db=(await connectDB).db('forum')
    // //이때 수정해야할 도큐먼트가 뭔지 사용자가 서버한테 전달을 해야함.서버는 수많은 글 중에서 어떤 거를 수정해야하는지 모르니까.
    let result= await db.collection('post').updateOne({_id:new ObjectId(req.body._id)},{$set:change})
    console.log('res',result)
     
    res.status(200).redirect(302,'/list')
    }
    }
    
    여기서 새로운 값으로 수정하려면 그 새로입력한 내용으로 수정이 되어야하는데..아무리해도 안되고 있습니다..
    맨처음에 입력했던 그 값 그대로예요 ㅠㅠ
    #117309

    codingapple
    키 마스터
    req.body._id 서버에서 잘나오나 출력해봅시다
    #117314

    김동아
    참가자
    아 console로 찍어보니까 id가 undefined라고 뜨네요.
    강의랑 똑같이 코드 입력한건데 어디가 누락된걸까요...
    화면에 id 부분을  display:none안했을때  해당 id가 잘 뜨고,그 id로 넘기는건데 말이죠.. ㅠㅠ
    #117331

    codingapple
    키 마스터
    req.body.id 라고 써봅시다
    #117353

    김동아
    참가자
    오 id라고 하니까 됐어요! 정말 감사합니다 ㅎㅎ
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠