[javascript] Next.js에서의 데이터베이스 연동 방법은 어떤 것이 있나요?
- 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
함수를 작성했습니다. 이 함수를 호출하여 데이터베이스에 접속할 수 있습니다.
- 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 등 다양한 방식으로 접근할 수 있습니다. 프로젝트의 요구사항과 개발자의 선호에 따라 적절한 방법을 선택하여 사용하면 됩니다. 사용하는 데이터베이스에 따라 해당 데이터베이스와의 연결 방법을 이해하고 코드를 작성하는 것이 중요합니다.