4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2023년 8월 24일 14:54 #95698
최현수참가자src/app/list/page.js
import Link from "next/link"; import { connectDB } from "../../../util/database"; import DetailLink from "./DetailLink";
export default async function List() { // db 데이터 가져오기 const db = (await connectDB).db("forum"); let result = await db.collection("post").find().toArray(); console.log(result);
return ( <div className="list-bg"> {result.map((a, i) => { return ( <div className="list-item"> <Link href={"/detail/" + result[i]._id}> <h4>{result[i].title}</h4> </Link> <p>{result[i].content}</p> {/* <DetailLink /> */} <Link href={"/edit/" + result[i]._id} className="list-btn"> 수정하기✏️ </Link> </div> ); })} </div> ); }
src/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"); let result = await db .collection("post") .findOne({ _id: new ObjectId(props.params.id) });
return ( <div className="p-20"> <h4>수정페이지</h4> <form action="/api/edit" method="POST"> <input name="title" value={result.title} /> <input name="content" value={result.content} /> <input style={{ display: "none" }} name="_id" value={result._id.toString()} /> <button type="submit">수정하기</button> </form> </div> ); } src/app/api/new-post/route.js
import { NextResponse } from "next/server"; import { redirect } from "next/navigation"; import { connectDB } from "../../../../util/database";
export async function POST(req) { const formData = await req.formData(); const title = formData.get("title"); const content = formData.get("content"); const db = (await connectDB).db("forum"); const post = { title, content }; await db.collection("post").insertOne(post); redirect("/list"); }
src/app/api/edit/route.js
import { connectDB } from "../../../../util/database"; import { ObjectId } from "mongodb";
export async function POST(req, res) { const formData = await req.formData(); const title = formData.get("title"); const content = formData.get("content"); const db = (await connectDB).db("forum"); const updatePost = { title, content }; let result = await db .collection("post") .updateOne({ _id: new ObjectId(req.body._id) }, { $set: updatePost }); console.log(result); return NextResponse.json({ updatePost }); }
현재 글 작성하고 리다이렉트가 되지않는문제와 게시물이 아예 지워지지않는 고유값처럼
수정되지않는 문제가 발생합니다.
다른 버전으로 해보려고 하니까 많이 힘드네요...도와주십쇼..
2023년 8월 24일 15:46 #95703
codingapple키 마스터redirect는 이런거 쓰라는군요 https://nextjs.org/docs/app/api-reference/functions/next-response#redirect db에 있는게 수정안되는건 _id가 틀리거나 오타있는게 아닐까요
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.