그럼 이제 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
생각보다 자료가 별로 없어서 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으로 데이터를 받을 수 있게 되었다!
'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 |