[javascript] Next.js에서의 데이터베이스 연동 방법은 어떤 것이 있나요?
  1. API Routes를 사용하는 방법: Next.js에서는 API Routes를 만들어 서버 사이드에서 데이터베이스에 직접 접근할 수 있습니다. 예를 들어, pages/api 디렉토리에 API 엔드포인트를 생성하고 해당 엔드포인트에서 데이터베이스를 연동하는 코드를 작성할 수 있습니다. ```javascript // pages/api/users.js

import { connectToDatabase } from ‘../../utils/database’;

export default async function handler(req, res) { // 데이터베이스 연결 const db = await connectToDatabase();

// 데이터베이스 쿼리 실행 등 필요한 작업 수행

// 결과 반환 res.json({ data }); }


2. 데이터베이스 라이브러리를 사용하는 방법: Next.js에서는 어떤 데이터베이스 라이브러리를 사용하던지 사용자 정의 함수나 컴포넌트에서 데이터베이스에 접근할 수 있습니다. 예를 들어, MongoDB를 사용하는 경우 `mongodb` 라이브러리를 사용할 수 있습니다.
```javascript
// utils/database.js

import { MongoClient } from 'mongodb';

const uri = process.env.MONGODB_URI;

let cachedClient = null;

export async function connectToDatabase() {
  if (cachedClient) {
    return cachedClient;
  }

  const client = await MongoClient.connect(uri);

  cachedClient = client;
  return client;
}

위의 예제에서는 MongoDB에 연결하기 위한 connectToDatabase 함수를 작성했습니다. 이 함수를 호출하여 데이터베이스에 접속할 수 있습니다.

  1. Prisma 같은 ORM(Object-Relational Mapping)을 사용하는 방법: Prisma는 데이터베이스 연동과 쿼리 작성을 간편하게 도와주는 ORM입니다. Next.js에서 Prisma를 사용하여 데이터베이스에 접근할 수 있습니다. Prisma를 사용하면 쿼리 작성이 쉬워지고 데이터베이스 연동에 대한 중복 코드를 줄일 수 있습니다.
// pages/api/users.js

import { PrismaClient } from '@prisma/client';

export default async function handler(req, res) {
  const prisma = new PrismaClient();

  try {
    // Prisma를 통한 데이터베이스 연동 및 쿼리 실행
    const users = await prisma.user.findMany();

    // 결과 반환
    res.json({ data: users });
  } catch (error) {
    // 에러 처리
    res.json({ error: 'An error occurred' });
  } finally {
    // Prisma 클라이언트 종료
    prisma.$disconnect();
  }
}

위의 예제에서는 Prisma를 사용하여 user 테이블에서 모든 사용자를 조회하는 예제를 보여줍니다.

Next.js에서 데이터베이스 연동 방법은 API Routes, 데이터베이스 라이브러리, ORM 등 다양한 방식으로 접근할 수 있습니다. 프로젝트의 요구사항과 개발자의 선호에 따라 적절한 방법을 선택하여 사용하면 됩니다. 사용하는 데이터베이스에 따라 해당 데이터베이스와의 연결 방법을 이해하고 코드를 작성하는 것이 중요합니다.