본문 바로가기
Develop/NEXT

[Next.js] 게시판 만들기(0) Next.js에 mongoDB(몽고디비) 연결하기

by 임성장 2023. 8. 10.
728x90
해당 내용은 코딩애플의 Next.js 강의 내용을 기반으로 하고 있다는 것을 알려드립니다.

1. util 폴더 만들고 파일명.js 생성

// util/database.js

import { MongoClient } from 'mongodb'
const url = 'DB접속URL'
const options = { useNewUrlParser: true }
let connectDB

// 개발 중이라면
if (process.env.NODE_ENV === 'development') {

  // 변수 global._mongo 없으면
  if (!global._mongo) {
  	//전역변수 저장소에 보관
    global._mongo = new MongoClient(url, options).connect()
  }
  connectDB = global._mongo
  
  // 개발 중이 아니라면
} else {
  connectDB = new MongoClient(url, options).connect()
}
export { connectDB }
  • DB접속 URL은 MongoDB 홈페이지 로그인 -> OverView -> CONNECT 에서 확인하실 수 있습니다.

 

2. DB 입출력이 필요한 파일에서 connectDB 함수 가져다쓰기

import { connectDB } from "/util/database.js"

export default async function Home() {
  let client = await connectDB;
  const db = client.db('Database 이름');
  let result = await db.collection('Collection 이름').find().toArray();

  return (
	<div></div>
  )
}

 

  • 위 코드를 아래와 같이 축약 가능합니다.
export default async function Home() {
  let db = (await connectDB).db('forum');
  let result = await db.collection('post').find().toArray();

 

* DB 입출력 코드는 server component 안에서만 사용해야 합니다. 

  Client component에서 사용하면 DB Access Url 같이 중요한 내용이 사용자에게 노출되기 때문에 

  보안 상의 위험이 있을 수 있습니다.

728x90