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

home2 게시판 Next.js 게시판 수정기능 만들기 2 : Error: Invariant: missing action ID.

수정기능 만들기 2 : Error: Invariant: missing action ID.

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

    Kwanyong
    참가자
    안녕하세요 선생님
    
    수정기능 만들기2에서, 제출 버튼을 누르면, 데이터베이스 수정은 잘 되는데
    
    redirect가 안되고 아래와 같은 에러가 발생하네요
    
     
    
    
    아래는 콘솔에 나오는 에러이구요
    
    
    
    
    edit page.jsx파일
    
    
    import {connectDB} from "@/util/database";
    import { ObjectId } from "mongodb";
    export default async function Edit(props){
        const client = await connectDB;
        const db = client.db("forum")
        // console.log(props)
        // let result = await db.collection('post').findOne({_id : new ObjectId(props.params.id)})
        let result = await db.collection('post').findOne({_id : new ObjectId(props.params.id)});
        // console.log(result)
        return(
            <div className="p-20">
                <h4>Edit page</h4>
                <form action='/api/post/edit' method="POST">
                    <input type="text" name="title" defaultValue={result.title}/>
                    <input type="text" name="content" defaultValue={result.content}/>
                    <input style={{display : 'none'}} name="_id" defaultValue={result._id.toString()}/>
                    <button type="submit">Submit</button>
                </form>
            </div>
        )
    }
    
    page api post edit.jsx 파일
    
    import { connectDB } from "@/util/database"
    import { ObjectId } from "mongodb"
    export default async function handler(req, res){
        console.log(req.body)
        if(req.method == "POST"){
            let editElement = {
                title : req.body.title,
                content : req.body.content
            }
            const client = await connectDB;
            const db = client.db("forum")
            let result = await db.collection('post').updateOne(
                {_id : new ObjectId(req.body._id)}, 
                { $set : editElement} 
              );
            res.status(200).redirect('/list')
        }
       
    }
    
    그냥 이렇게 쓰면, 에러는 안나는데..
    res.status(200).json({message : "Post edited successfully"})
    
    
    뭐가 문제일까요 ㅠㅠ
    
    
    #78457

    codingapple
    키 마스터
    res.redirect(302, '/list') 라고 씁시다
    #78578

    Kwanyong
    참가자
    감사합니다.
    #81265

    오세현
    참가자
    안녕하세요 해당 오류와 같은 오류를 겪었다가 어떻게 어떻게 해결을 하긴하였는데 궁금한점이 있어서 댓글로 추가 질의를 드립니다.
    수정기능에 앞서 신규글 생성 할때에는
    ```
    return res.status(200).redirect('/list') 
    ```
    로 끝맺음을 하여도 에러가 나지 않았던거로 기억하는데..
    해당 문제를 겪고 해결하고나서 신규글 생성으로 가서 다시 해보니 똑같은 에러가 발생하더라구요.
    전에는 됬었는데 지금은 안되는 상황이 왜그런지 궁금해서 댓글을 남깁니다..
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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