티스토리 뷰
db 를 connect 해서 사용하지 말고 API 를 호출해서 사용하기 위한 EndPoint 를 만들어주는 역할을 한다.
루트에서 pages/api 폴더를 생성하면 endpoint 가 만들어지게 되며 이를 이용하여 api 를 만들 수 있다.
/pages/api/post/write 라는 api 를 만들어서 사용해보자!
별도의 백엔드서버를 구축하도록 합니다. 위치는 루트에서 pages/api 폴더를 만드시면 Endpoint 가 생성되며 /api 로 접근이 가능해집니다. 아래 구성을 보면, pages/api 폴더 밑에 각 js 파일들이 만들어진 것을 볼 수 있습니다.
우리는 이제 /api/post/write 를 생성해서 사용해보겠습니다.
- 몽고 db 커넥트 후, 단일 객체를 insert 해줍니다.
- 잘 완료시 redirect 를 사용하여 페이지가 이동될 것입니다.
- 실패시 catch 로 잡히며 db error 가 노출될 것 입니다.
// write.js
import { connectDB } from "@/util/db"
export default async function writeHandler(req, res) {
try {
const db = (await connectDB).db('forum')
const result = await db.collection('post').insertOne(req.body)
console.log('success', result)
res.redirect(302, '/')
} catch (error) {
return res.status(500).json('db error')
}
}
다음과 같이 insertOne 을 사용해서 단일객체를 추가할 수 있습니다.
만약, 다수객체를 넣고 싶으면 insertMany([ { … },{ … } ]) 를 사용하시면 됩니다.
이제 아래와 같이 write/page.tsx 를 만들어서 form 객체를 이용해 submit 을 날리면, 위에서 만든 백엔드 서버에서 로직이 실행될 것 입니다. 잘되면, 루트 페이지로 이동할 것 입니다.
export default async function Write() {
return (
<div className="p-20">
<form action="/api/post/write" method="POST">
<input name="title" placeholder="글제목"/>
<input name="content" placeholder="글내용"/>
<button type="submit">전송</button>
</form>
</div>
)
}
'개발.. > Nextjs' 카테고리의 다른 글
static rendering, dynamic rendering, cache (0) | 2023.11.05 |
---|---|
Next.js 14 Release! (0) | 2023.10.31 |
Nextjs 13 에서 동적 라우팅사용하기 (0) | 2023.10.22 |
Nextjs에 몽고 DB 연동하기 (0) | 2023.10.09 |
Nextjs 13에서 페이지 라우팅 방법 (0) | 2023.10.07 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 오블완
- React
- dockerfile
- 네이버 서치 어드바이저
- nextjs13
- nextjs14
- AWS
- vscode
- NUXT
- svelte
- vue composition api
- 티스토리챌린지
- openAI
- NextJS
- Git
- nuxt2
- webpack
- 서버 to 서버
- nodejs
- seo
- 타입스크립트
- 깃허브
- vue router
- 스벨트
- Vite
- Storybook
- Github Actions
- cors
- Embedding
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함