본문 바로가기
교육후 개인공부/React

[Next.js] 게시물수정하기

by 뭉지야 2023. 12. 7.
728x90
 await db.collection("post").updateOne({수정할게시물정보 id같은거}, { $set: {수정할내용} });

 

 

근데 id에 대한 정보가 없다 

그래서 id를 이런식으로 보내줘야한다.

import { connectDB } from "@/util/database";
import { ObjectId } from "mongodb";

export default async function Edit(props) {
  //제목과 내용에 담길 DB내용을 가져올거다
  const client = await connectDB;
  const db = client.db("market");
  let result = await db
    .collection("post")
    .findOne({ _id: new ObjectId(props.params.id) });


  return (
    <div>
      <div className="p-20">
        <h4>수정페이지</h4>

        <form action="/api/post/edit" method="POST">
          <input name="title" defaultValue={result.title} />
          <input name="content" defaultValue={result.content} />
          <input
            name="_id"
            defaultValue={result._id}
            style={{ display: "none" }}
          />
          <button type="submit">수정</button>
        </form>
      </div>
    </div>
  );
}

 

그럼 console.log(요청.body)를 찍으면 id, title, content가 다 들어있을거다.

이걸로 서버에서 작업하면 된다.

 

import { connectDB } from "@/util/database";
import { ObjectId } from "mongodb";

export default async function handler(요청, 응답) {
  if (요청.method == "POST") {
    // console.log(요청.body);
    let 바꿀거 = { title: 요청.body.title, content: 요청.body.content };

    const client = await connectDB;
    const db = client.db("market");
    //id는 모르니까 유저한테 보내라고 해야한다
    let result = await db
      .collection("post")
      .updateOne({ _id: new ObjectId(요청.body._id) }, { $set: 바꿀거 });
    응답.redirect(302, "/list");
  }
}
728x90