개발 공부
Next.js MariaDB를 연결 설정 본문
1. 패키지 설치
npm install mariadb
2. DB 연결 파일
//src/lib/db.ts
import mariadb from 'mariadb';
const pool = mariadb.createPool({
host: 'localhost',
user: 'xxx',
password: 'yyy',
database: 'zzz',
connectionLimit: 5
});
export async function query(sql: string, values: any[] = []) {
let conn;
try {
conn = await pool.getConnection();
const result = await conn.query(sql, values);
return result;
} catch (error) {
console.error('앗! 데이터베이스 쿼리 에러:', error);
throw error;
} finally {
if (conn) conn.release();
}
}
export default pool;
3. API 라우트 설정
//pages/api/example.ts
import type { NextApiRequest, NextApiResponse } from 'next';
import { query } from '../../db';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
if (req.method === 'GET') {
try {
const result = await query('SELECT * FROM your_table');
res.status(200).json(result);
} catch (error) {
res.status(500).json({ message: '데이터 가져오기 실패 ㅠㅠ' });
}
} else {
res.setHeader('Allow', ['GET']);
res.status(405).end(`${req.method} 메소드는 허용되지 않아요!`);
}
}
4. 컴포넌트 설정
import { useEffect, useState } from 'react';
export default function ExampleComponent() {
const [data, setData] = useState([]);
useEffect(() => {
async function fetchData() {
const response = await fetch('/api/example');
const result = await response.json();
setData(result);
}
fetchData();
}, []);
return (
<div>
{data.map((item: any) => (
<p key={item.id}>{item.name}</p>
))}
</div>
);
}
'웹개발 (자바, 스프링, React) > Next.js' 카테고리의 다른 글
Tailwind css 기본 class (0) | 2024.11.14 |
---|---|
Flowbite Admin Dashboard 템플릿 사용하여 어드민 페이지 토대 만들기 (1) | 2024.11.14 |
Tailwind CSS와 Bootstrap: 비교와 추천 (0) | 2024.11.14 |
Next.js Layout 에 use client 사용? (1) | 2024.11.13 |
서버 사이드 렌더링의 장점 (2) | 2024.11.13 |
Comments