티스토리 뷰

728x90
반응형

다음으로 NodeJS 기반 Database 연동 방법에 대해 알아보자.

 MySQL 연동 

NodeJS는 Database와 연동을 위한 Connector를 Node Module로 제공한다.

대부분의 알려진 Database 연동 모듈을 제공하지만, 국내 티맥스소프트 사의 Tibero DB는 아직 Node Module에 공식으로 등록되어 있지는 않다.

 NODE MODULE 설치 

이번 가이드에서는 MySQL과의 연동과정을 살펴보도록 하겠으며, 다음과 같이 먼저 mysql node module을 설치한다.

D:\NodeJS>npm install mysql2 --save
npm WARN optional SKIPPING OPTIONAL DEPENDENCY:
fsevents@2.1.3 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3:
wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

+ mysql2@2.1.0
updated 1 package and audited 358 packages in 1.808s

11 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


D:\NodeJS>

먼저 위와 같이 mysql2 모듈을 설치하고 MySQL 연동을 진행한다.

{

  "name": "sampleapp",

  "version": "0.0.0",

  "private": true,

  "scripts": {

    "start": "pm2-dev start ./bin/www",

    "stop": "pm2-dev stop ./bin/www",

    "nodemon": "nodemon ./bin/www"

  },

  "dependencies": {

    "connect-flash": "^0.1.1",

    "cookie-parser": "~1.4.4",

    "debug": "~2.6.9",

    "ejs": "~2.6.1",

    "express": "~4.16.1",

    "express-session": "^1.17.1",

    "http-errors": "~1.6.3",

    "morgan": "~1.9.1",

    "mysql": "^2.18.1",

    "mysql2": "^2.1.0",

    "passport": "^0.4.1",

    "passport-local": "^1.0.0"

  },

  "devDependencies": {

    "nodemon": "^2.0.4",

    "pm2": "^4.4.0"

  }

}

 Database 접속 구성 및 Query 수행 (JavaScript) 

var express = require('express')

var app = express()

var router = express.Router()

var path = require('path')

var mysql = require('mysql2');

var passport = require('passport');

const { Router } = require('express');

var LocalStrategy = require('passport-local').Strategy

 

var connection = mysql.createConnection({

    host: 'localhost',

    port: 3306,

    user: 'root',

    password: 'jin5841!@#',

    database: 'godnr'

});

connection.connect();

 

router.get('/', function (req, res) {

    var responseData = {};

    var query = connection.query('select event from sports', function (err, rows) {

        if (err) throw err;

        if (rows.length) {

            console.log(rows);

            responseData.result = 1;

            responseData.data = rows;

        } else {

            responseData.result = "0";

        }

        res.json(responseData)

    })

})

 

module.exports = router;

Node Module이 설치되면 위와 같이 코드를 작성하여 Database에 접속할 수 있다.

 

1) var mysql = require('mysql2');

- loading module

2) var connection = mysql.createConnection({

    host: 'localhost',

    port: 3306,

    user: 'root',

    password: 'p@ssw0rd',

    database: 'godnr'

});
connection.connect();

- Database Connection Info 등록

3) connection.query('select event from sports', function (err, rows)

- Database Connect with Query

 

Node Module은 별도의 Database Connect Library를 구성할 필요 없이 npm install 만으로 손쉬운 구성이 가능하다. 또한 Connect 정보를 등록하고, Query를 수행하는 것 까지 커다란 노력 없이 손쉬운 구성이 가능하다.  이는 Database 연동 뿐만 아니라 API 호출 역시 손쉽게 몇 줄의 코드만으로 사용이 가능하다.

이는 차차 하나씩 다뤄보기로 하자.

위 connection.query의 return은 responseData에 query 결과를 담아 전송한다.

이때 json 형태로 전송하기 위해 res.json(ResponseData)으로 Return 하도록 구성한다.

728x90
반응형