next.js + mongoDB (1) - DB 연결

oweaj·2024년 7월 25일
post-thumbnail

next와 mongoDB를 학습했던 부분을 활용하여 프로젝트를 진행했습니다. 그래서 mongoDB 연결하는 부분과 스키마 정의 및 데이터 입출력에 대해 포스팅을 나눠서 정리해서 남겨두려고 합니다.


MongoDB 시작

먼저 mongoDB에서 가입한 후 기본적인 설정을 마치고 시작하는 내용입니다.

1) 왼쪽 사이드 Security 메뉴에서 Database Access 항목을 클릭합니다.

  • 연결하기 위한 DB 사용자 계정 설정

  • 아이디와 비번을 생성
  • DB 사용자 권한의 Built-in-Role에서 모든 DB 읽고 쓰기로 설정

2) 왼쪽 사이드 Security 메뉴에서 Network Access 항목으로 넘어갑니다.

  • DB 접근할때 허용하려는 IP주소를 모든 IP를 허용으로 0.0.0.0/0으로 설정 (본인의 프로젝트라면 보안을 위해 모든 IP 허용이 아니라 특정 IP로 설정)

3) DB url를 가져오기 위해 Database 메뉴로 넘어갑니다.

  • 여기서 Connect버튼를 클릭

  • Drivers를 클릭하면 MongoDB install 부터 연결하는 절차대로 진행
// Add your connection string into your application code

mongodb+srv://Cluster0:<db_password>@cluster0.cenjysx.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0
  • 절차대로 진행하면서 위 처럼 표시된 코드가 나오는데 이 부분을 복사 (db_password 부분에 생성한 DB 계정 비밀번호 넣어줘야함)

MongoDB 연결

  • mongoose

    mongoose는 MongoDB의 ODM(Object Document Mapping)이며 Document를 Javascript의 객체로 바뀌주는 역할을 하고 MongoDB의 기능들을 mongoose가 보완해줍니다.
    그리고 MongoDB는 정해진 규칙이 없어 자유롭게 데이터를 넣을 수 있는데 어떤형식이든 Document에 넣어도 자유롭기 때문에 에러가 발생하지 않습니다. 이러면 추후에 문제가 발생할 수 있습니다.
    그래서 이런 문제를 막기 위해 mongoose는 스키마로 데이터 구조를 정의 및 검증하고 일관성있게 데이터를 관리하여 DB작업의 안전성과 효율성을 높입니다.
// db.ts

import mongoose from "mongoose";

const connectDB = async () => {
  try {
    if (mongoose.connection.readyState >= 1) return; // 불필요한 추가 DB연결 방지
    await mongoose.connect(process.env.MONGODB_URL as string);
    console.log("mongoDB 연결 성공");
  } catch (error) {
    console.log(error);
  }
};

export default connectDB;
  • 로컬 실행 시 터미널에서 DB와 연결 성공된 콘솔을 볼 수 있습니다.

다음 포스팅 스키마 정의 및 데이터 입출력에 대한 정리

profile
데굴데굴데굴데굴데굴

0개의 댓글