pnpm add mysql2
src/lib.db.ts
import mysql from 'mysql2/promise';
export async function createConnection() {
const connection = await mysql.createConnection({
host: process.env.NEXT_PUBLIC_DB_HOST, // localhost
user: process.env.NEXT_PUBLIC_DB_USER, // 데이터베이스 사용자
password: process.env.NEXT_PUBLIC_DB_PASSWORD, // 데이터베이스 비밀번호
database: process.env.NEXT_PUBLIC_DB_NAME, // 데이터베이스 이름
});
return connection;
page/api/user.ts
import { NextApiRequest, NextApiResponse } from 'next';
import { createConnection } from '../../lib/db';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
if (req.method === 'GET') {
try {
const connection = await createConnection();
const [users] = await connection.execute('SELECT * FROM user');
connection.end();
res.status(200).json(users);
} catch (e) {
res.status(500).json({ error: 'Failed to fetch data' });
}
} else {
res.setHeader('Allow', ['GET']);
res.status(405).end(`Method ${req.method} Not Allowed`);
}
}
GET 메서드가 들어왔을 때 db와 연결
const connection = await createConnection();
그 다음에 execute 명령어를 통해 쿼리를 실행하면 된다. 현재는 테스트용으로 db에 있는 user 데이터를 불러올 생각이기 때문에 SELECT * FROM user
이렇게 실행
const [users] = await connection.execute('SELECT * FROM user');
실행하고 나서 연결을 종료
connection.end();
결과를 response에 담아서 200 status와 함께 클라이언트 측으로 발송.
res.status(200).json(users);