06_MySQL : node.js 와의 연결
BackEnd/DB

06_MySQL : node.js 와의 연결

728x90

그럼 이제 node.js 에서 mysql에 접근하는 법을 알아보자.

 

 

node.js에서 MySQL에 접근하기 위해서는 라이브러리를 사용해야한다.

 

 

mysql

 

mysql2

 

두가지 npm 라이브러리를 사용할 수 있다.

 

우선 mysql2는 mysql에 몇가지 추가 기능이 있고, mysql에서는 지원 안되는 async/await 기능이 지원되기에 mysql2라이브러리를 사용했다.

 

 

npm i mysql2 -D

 

 

라이브러리를 설치해 주었으면 npm 공식문서에서의 코드를 한번 보자.

 

https://www.npmjs.com/package/mysql2

 

mysql2

fast mysql driver. Implements core protocol, prepared statements, ssl and compression in native JS. Latest version: 2.3.3, last published: 10 months ago. Start using mysql2 in your project by running `npm i mysql2`. There are 3160 other projects in the npm

www.npmjs.com

 

생각보다 자료가 별로 없어서 npm자료를 참고해서 코드를 작성해보았다.

 

// get the client
const mysql = require('mysql2');

// create the connection to database
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  database: 'test'
});

// simple query
connection.query(
  'SELECT * FROM `table` WHERE `name` = "Page" AND `age` > 45',
  function(err, results, fields) {
    console.log(results); // results contains rows returned by server
    console.log(fields); // fields contains extra meta data about results, if available
  }
);

// with placeholder
connection.query(
  'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?',
  ['Page', 45],
  function(err, results) {
    console.log(results);
  }
);

 

먼저나오는 예시가 위와 같다.

 

위 부분에서 host,user,database부분을 자신에게 맞게 바꾸어 주여야 한다.

 

host : host 주소 (localhost 혹은 127.0.0.1)

user : "root"  (사용자 이름)

database : "minsqltutorials" (접속할 database , USE를 사용해서 들어간것과 동일)

 

더불어서 비밀번호가 있다면, 

 

pasword : "[비밀번호]" 를 추가해줘야 한다.

 

 

만약 이전 글들에서 나를 따라왔다면

 

require("mysql2");

// create the connection to database
const connection = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "[비밀번호]",
  database: "minsqltutorial",
});

// simple query
connection.query("SELECT * FROM topic", function (err, results, fields) {
  console.log(results); // results contains rows returned by server
  console.log(fields); // fields contains extra meta data about results, if available
})

위와같이 약간 코드를 변경한 후에, result를 보면 아까 입력해둔 db값들이 출력됨을 알 수 있다.

 

 

 

그렇다면, 이 과정을 async/await으로 고쳐써보자.

 

const mysql = require("mysql2/promise");

async function test() {
  // get the client

  // get the promise implementation, we will use bluebird

  // create the connection, specify bluebird as Promise
  const connection = await mysql.createConnection({ host: "localhost", user: "root", password: "[비밀번호]", database: "minsqltutorial" });

  // query database
  const [rows, fields] = await connection.execute("SELECT * FROM topic", ["Morty", 14]);
  console.log(rows);
}

test();

 

이역시 위에 올린 npm사이트의 코드를 약간 변형하여 접근할 수 있게 바꿔본 코드이다.

 

코드의 결과는 위와 같이 나온다.

 

 

이제 node.js와 sql도 연결하였으니 백에서 요청이 들어오면 쿼리문을 통해서 async/await으로 데이터를 받을 수 있게 되었다!

728x90

'BackEnd > DB' 카테고리의 다른 글

[프리즈마] prisma 사용  (0) 2022.10.02
MySQL password 설정 (5.7.6 버전 이상)  (0) 2022.09.14
05_MySQL : 관계형 데이터베이스 , JOIN  (0) 2022.09.13
04_MySQL : 테이블, CURD  (0) 2022.09.13
03_MySQL : 구조 및 생성  (0) 2022.09.13