IT/Node.js

[Node.js/MariaDB] express에 DB 연동하기

땅일단 2023. 9. 21. 23:08

날씨가 슬슬 추워지네요.

요새 회사에서는 keycloak이라는 SSO 솔루션을 배포서버에 적용중인데 화가 많이 나더군요.

기회가 되면 이것도 정리해서 올리도록 하겠습니다.

 

사실 DB 연동하는건 간단합니다. 저번에 jsp에서 DB 연결하는 포스트를 올렸었는데 그거랑 비슷하고 사실 그것보다 더 쉽습니다.

 

어쨌든 mariadb를 연결하려면 패키지가 필요하므로 터미널에 npm install mariadb를 입력합니다.

 

npm 사이트의 mariadb에 들어가보면 아주 친절하게 연동 예시코드까지 제공하고 있습니다.

 

 

mariadb

fast mariadb or mysql connector.. Latest version: 3.2.1, last published: 7 days ago. Start using mariadb in your project by running `npm i mariadb`. There are 274 other projects in the npm registry using mariadb.

www.npmjs.com

 

저는 DB를 연결하는 부분을 다른 파일로 관리하고 싶어서 db.js 라는 파일을 만들었습니다.

// db.js
const mariadb = require("mariadb");

module.exports = {
    connect: async function asyncFunction() {
        let conn;
        
        const pool = mariadb.createPool({
            host: "192.168.242.128", 
            user: "psk", 
            password: "xxxxxxx", 
            database: "board", 
            connectionLimit: 5
        });
    
        try {
          conn = await pool.getConnection();
          const rows = await conn.query("SELECT 1 as val");
          console.log(rows);    // rows: [ {val: 1}, meta: ... ]
        } finally {
          if (conn) conn.release();
        }
    }
}

module.exports로 외부에서도 쓸 수 있는 모듈을 정의합니다.

그 안에는 connect라는 함수가 있어서, 외부에서 connect 함수를 호출할 수 있습니다.

 

DB 연결하는 부분은 거의 공식같은 코드라서 그냥 복붙해도 무방합니다.

"SELECT 1 as val" 이라는 쿼리를 입력한다면 저렇게 DB를 조회한 결과가 출력됩니다.

 

const res = await conn.query("INSERT INTO users value (?, ?, ?)", [0, "psk2", "xxxxxx"]);

쿼리는 이렇게 파라미터를 따로 입력할 수도 있습니다.

 

// index.js
const db = require("./db");

app.listen(8000, () => {
    db.connect();
})

여기까지 했다면 index.js에서 connect 함수를 호출해서 연결 테스트를 해 봅니다.

 

전체코드는 아래를 참고해주세요.

 

GitHub - ParkBible/Express_Study: Node.js express로 백엔드 구축

Node.js express로 백엔드 구축. Contribute to ParkBible/Express_Study development by creating an account on GitHub.

github.com