[next.js 개발] Next.js14에 Mysql연결하기

 

프레임워크 : next.js14 + TS

db 설정 참고 repo
https://github.com/zinkkii/NextBoard/blob/master/app/lib/db.jsx

환경변수 설정
https://nextjs.org/docs/app/api-reference/next-config-js/env

1. 설치

npm i --save-dev @types/mysql
npm i mysql2

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

2. 코드

나는 Next.js 14버전을 사용중이라 app/_lib/db.tsx경로로 db파일을 만들었다. 환경변수는 .env.local로 만들어줬다. 그리고 .env.local을 .gitignore에도 추가했다. (공식문서 참조)

//app/_lib/db.tsx
import { createPool } from 'mysql2'

const pool = createPool({
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_DATABASE,
    port: 3306,
})

pool.getConnection((err, conn) => {
    if (err) console.log('Error connecting to db...')
    else console.log('Connected to db...!')
    conn.release()
})

const executeQuery = (query, arrParams) => {
    return new Promise((resolve, reject) => {
        try {
            pool.query(query, arrParams, (err, data) => {
                if (err) {
                    console.log('Error in executing the query')
                    reject(err)
                }
                console.log('------db.jsx------')
                //console.log(data)
                resolve(data)
            })
        } catch (err) {
            reject(err)
        }
    })
}

export default executeQuery

그런 다음 홈화면에서 쿼리를 실행시키고 받은 데이터를 뿌려줬다.

//app/page.tsx
import executeQuery from './_lib/db.tsx'

export default async function Home() {
    const sql = 'select * from bridge.user'
    const data = await executeQuery(sql, '')
    const getdata = JSON.parse(JSON.stringify(data))
    console.log(getdata)
    return (
        <div>
            {getdata.map((data, i) => {
                return (
                    <>
                        <p>
                            {data.id} {data.username}
                        </p>
                    </>
                )
            })}
        </div>
    )
}

 

[출처] https://velog.io/@j_wisdom_h/Next.js%EC%97%90-Mysql%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
126 [프론트앤드] 리액트(React) 간단 문법 정리 file 졸리운_곰 2025.11.19 549
125 [JavaScript] Algorithm | Fizz Buzz 졸리운_곰 2025.01.03 365
124 [Javascript] onload, ready file 졸리운_곰 2024.08.13 464
123 [HTML][JavaScript] jQuery .ready() vs .onload() 특징 및 차이 졸리운_곰 2024.05.23 442
122 [JavaScript] JavaScript / Object / Element.removeAttribute() / 요소의 속성을 제거하는 메서드 졸리운_곰 2024.05.18 402
121 [JavaScript] How to select all tag elements with JS 졸리운_곰 2024.05.18 11105
120 [JavaScript] 자바스크립트 javascript 정규식 replace html 제거 태그 제거 졸리운_곰 2024.05.18 621
119 [JavaScript] Checking if iframe contents are loaded? : iframe 로딩 완료 이벤트 확인 졸리운_곰 2024.05.18 533
118 [JavaScript] 자바스크립트 DIV 보이기, 숨기기(토글) 졸리운_곰 2024.05.16 501
117 [JavaScript] [JS] XPath로 element 찾기 file 졸리운_곰 2024.05.16 495
116 [JavaScript] Force-DOM-reflow-JS 졸리운_곰 2024.05.16 522
115 [JavaScript] Javascript XPath를 이용해서 Dom Element 가져오기 졸리운_곰 2024.05.15 496
114 [JavaScript] Introduction to using XPath in JavaScript 졸리운_곰 2024.05.15 504
113 [JavaScript] JavaScript :: 요소 가져오기 file 졸리운_곰 2024.05.15 579
112 [JS] 문자열의 위치 찾기 & 문자열 추출하기 file 졸리운_곰 2024.02.28 573
111 [JavaScript] lastIndexOf() : String에서 원하는 값의 마지막 위치(index) 찾기 졸리운_곰 2024.02.28 544
110 [Javascript] [Javascript] 자바스크립트에서 Class 사용하기-constructor, extends, file 졸리운_곰 2023.11.29 616
109 [Javascript] undefined와 null의 차이점이란 ? 졸리운_곰 2023.11.29 476
108 [JavaScript] [JS] CORS 정리 및 오류 해결 졸리운_곰 2023.05.09 454
107 [JavaScript] 자바스크립트 객체 배열에서 indexOf 사용방법 졸리운_곰 2023.01.26 480
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED