안녕하세요.
이번에는 Node.js + MySQL 연동을 해보도록 하겠습니다.
먼저 MySQL에서 데이터를 만들어줍니다.
1. 테이블 생성
create table user (
id varchar(10) not null primary key,
pw varchar(20) not null,
name varchar(5) not null,
gender ENUM('F', 'M', '') default '',
birthday DATE not null,
age int(3) not null default 0
);
2. 데이터 삽입
insert into user values ('hong1234', '8o4bkg', '홍길동', 'M', '1990-01-31', 33);
insert into user values ('sexysung', '87awjkdf', '성춘향', 'F', '1992-03-31', 31);
insert into user values ('power70', 'qxur8sda', '변사또', 'M', '1970-05-02', 53);
insert into user values ('hanjo', 'jk48fn4', '한조', 'M', '1984-10-18', 39);
insert into user values ('widomaker', '38ewifh3', '위도우', 'F', '1976-06-27', 47);
insert into user values ('dvadva', 'k3f3ah', '송하나', 'F', '2001-06-03', 22);
insert into user values ('jungkrat', '4ifha7f', '정크랫', 'M', '1999-11-11', 24);
select * from user;
3. MySQL 최종 데이터
4. Node.js 준비
- 먼저 mysql npm을 다운로드 합니다.
npm install mysql
그리고 Node.js의 index.js 파일을 다음과 같이 작성합니다.
index.js
const mysql = require('mysql');
// DB에 연결하는 함수
// root 계정은 사용 불가능
// const cnn = mysql.createConnection({
// host: 'localhost',
// user: 'root',
// password: 'admin',
// database: 'test'
// });
// 새로운 user로 실행
const cnn = mysql.createConnection({
host: '127.0.0.1',
user: 'test',
password: 'qwer1234',
database: 'test'
});
cnn.query("select * from user", (err, result) => {
// err 변수에는 query문에서 error이 발생하지 않는 이상 undefined 값이 기본 값이다.
if (err) console.log(err);
console.log(result);
});
cnn.query("insert into user values ('kiriko', '79qwsd2', '키리코', 'F', '2022-11-01', 26)", (err, result) => {
if (err) console.log(err);
console.log(result);
});
- Mac 에서는 localhost 인식을 못하는 Error가 있어서 127.0.0.1을 사용하시면 됩니다.
- MySQL에서는 root 계정으로 접근하는 것을 막아놨기 때문에 다른 계정을 사용해야합니다.
sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
5. 연습하기
index.js
const express = require('express');
const mysql = require('mysql');
const app = express();
const port = 8080;
const cnn = mysql.createConnection({
host: 'localhost',
user: 'test',
password: 'qwer1234',
database: 'test'
});
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
cnn.query('select * from user', (err, result) => {
if (err) throw err;
console.log(result);
res.render('index', {rows: result});
});
});
app.listen(port, () => {
console.log('server open : ', port);
});
/views/index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<% for(let i = 0; i < rows.length; i++) { %>
<div>
<span><%= rows[i].id %></span><span> <%= rows[i].name %></span>
</div>
<% } %>
</div>
</body>
</html>
index.js 파일과 index.ejs 파일을 작성 후에
localhost:8080 으로 접속하면 아래와 같은 결과가 나옵니다.
콘솔 결과 - html
이상으로 Node.js + MySQL 연동하는 방법에 대해서 알아보았습니다.
감사합니다.
반응형
'Node' 카테고리의 다른 글
[Node.js] MySQL Sequelize 사용해보기 (0) | 2023.03.12 |
---|---|
[Node.js] MVC 패턴 사용해보기 (0) | 2023.03.11 |
[Node.js] 파일 업로드(multer) 사용해보기 (0) | 2023.03.06 |
[Node.js] 미들웨어 사용해보기 (0) | 2023.03.05 |
[Node.js] 동기와 비동기 통신 방법에 대하여 알아보기 (0) | 2023.03.04 |