[typescript] 타입스크립트와 MongoDB 연동 시 확장성 있는 코드 작성 방법

타입스크립트는 JavaScript에 타입을 추가한 것으로, MongoDB와의 연동을 위해 사용될 때 확장성 있는 코드를 작성할 수 있습니다. 이번 포스트에서는 타입스크립트와 MongoDB를 연동하여 확장성 있는 코드를 작성하는 방법을 살펴보겠습니다.

목차

설치 및 설정

먼저 프로젝트에 필요한 의존성을 설치합니다. 타입스크립트와 MongoDB를 사용하기 위해 다음과 같은 패키지를 설치해야 합니다.

npm install typescript mongoose

이제 tsconfig.json 파일을 생성하여 타입스크립트 설정을 해줍니다.

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "outDir": "./dist",
    "strict": true
  }
}

모델 정의

타입스크립트에서 MongoDB와 연동하기 위해서는 모델을 정의해야 합니다. 아래는 예시 모델입니다.

import mongoose, { Document, Schema } from 'mongoose';

interface IUser extends Document {
  name: string;
  email: string;
  age?: number;
}

const UserSchema: Schema = new Schema({
  name: { type: String, required: true },
  email: { type: String, required: true },
  age: { type: Number }
});

const User = mongoose.model<IUser>('User', UserSchema);

export default User;

CRUD 작업

모델이 정의되면 CRUD(Create, Read, Update, Delete) 작업을 수행할 수 있습니다.

Create

const createUser = async (name: string, email: string, age?: number): Promise<IUser> => {
  const user = new User({ name, email, age });
  return await user.save();
};

Read

const findUserByName = async (name: string): Promise<IUser | null> => {
  return await User.findOne({ name });
};

Update

const updateUserEmail = async (name: string, newEmail: string): Promise<IUser | null> => {
  return await User.findOneAndUpdate({ name }, { email: newEmail }, { new: true });
};

Delete

const deleteUser = async (name: string): Promise<boolean> => {
  const result = await User.deleteOne({ name });
  return result.deletedCount === 1;
};

결론

타입스크립트와 MongoDB를 연동하여 확장성 있는 코드를 작성하는 방법에 대해 알아보았습니다. 모델을 정의하고 CRUD 작업을 통해 데이터를 관리할 수 있습니다. 이를 통해 안정적이고 확장성 있는 애플리케이션을 개발할 수 있습니다.