DB 파일 모듈화
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password : '1234',
database: 'Youtube',
dateStrings : true
});
connection.query(
'SELECT * FROM `users`',
function (err, results, fields) {
for (let i = 0; i < results.length; i++){
let { id, email, name, created_at } = results[i];
console.log(id);
console.log(email);
console.log(name);
console.log(created_at);
}
}
);
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password : '1234',
database: 'Youtube',
dateStrings : true
});
module.exports= connection
users.js
const express = require('express');
const router = express.Router();
const conn = require('../mariadb')
conn.query(
'SELECT * FROM `users`',
function (err, results, fields) {
for (let i = 0; i < results.length; i++){
let { id, email, name, created_at } = results[i];
console.log(id);
console.log(email);
console.log(name);
console.log(created_at);
}
}
);
router.use(express.json())
let db = new Map();
let id = 1;
function isExist(obj) {
if (Object.keys(obj).length) return true;
else return false;
}
router.post('/login', function (req, res) {
console.log(req.body);
const { userId, password } = req.body;
let loginUser = {};
db.forEach(function (user, id) {
if (user.userId === userId) {
loginUser = user;
}
})
if (isExist(loginUser)) {
if (loginUser.password === password) {
res.status(200).json({
message: `${loginUser.name}님 로그인 되었습니다`
})
} else {
res.status(400).json({
message: `비밀번호가 틀렸습니다`
})
}
} else {
res.status(404).json({
message: '입력하신 아이디는 없는 아이디 입니다.'
})
}
})
router.post('/join', function (req, res) {
console.log(req.body);
if (Object.keys(req.body).length !== 0) {
const {userId} = req.body
db.set(userId, req.body);
res.status(201).json({
message: `${db.get(userId).name}님 환영합니다.`
});
} else {
res.status(400).json({
message: `입력값을 다시 확인해주세요.`
});
}
});
router
.route('/users')
.get(function (req, res) {
let { userId } = req.body;
const user = db.get(userId);
if (user) {
res.status(200).json({
userId: user.userId,
name : user.name
})
} else {
res.status(404).json({
message : '잘못된 아이디 번호입니다'
})
}
})
.delete(function (req, res) {
let { userId } = req.body;
const user = db.get(userId);
if (user) {
db.delete(id);
res.status(200).json({
message: `${user.name}님 다음에 또 뵙겠습니다`
})
} else {
res.status(404).json({
message : '잘못된 아이디 번호입니다'
})
}
})
module.exports = router
이전에 사용했던 users.js를 db연동해서 사용해보자 (개별조회)
- body값으로 이메일을 입력받아, 정보를 넘겨보자
router
.route('/users')
.get(function (req, res) {
let { email } = req.body;
conn.query(
`SELECT * FROM users WHERE email = ?`, email,
function (err, results, fields) {
res.status(200).json(results)
}
);
})

회원가입 DB연동 (INSERT)
- req : body (email, name, pwd, contact)
router.post('/join', function (req, res) {
console.log(req.body);
if (Object.keys(req.body).length !== 0) {
const { email, name, password, contact } = req.body;
conn.query(
`INSERT INTO users (email, name, password, contact)
VALUES (?, ?, ?, ?)`, [email, name, password, contact],
function (err, results, fields) {
res.status(201).json(results);
}
)
} else {
res.status(400).json({
message: `입력값을 다시 확인해주세요.`
});
}
});
회원 탈퇴 DB연동 (DELETE)
.delete(function (req, res) {
let { email } = req.body;
conn.query(
`DELETE FROM users WHERE email = ?`, email,
function (err, results, fields) {
res.status(200).json(results)
}
);
})


login db연동하기 (SELECT)
- req : body(email, password)
router.post('/login', function (req, res) {
const { email, password } = req.body;
let loginUser = {};
conn.query(
`SELECT * FROM users WHERE email = ?`, email,
function (err, results, fields) {
loginUser = results[0];
if (loginUser && loginUser.password === password) {
res.status(200).json({
message: `${loginUser.name}님 로그인 되었습니다.`
})
}
else {
res.status(404).json({
message : "이메일 또는 비밀번호가 틀렸습니다"
})
}
}
);
})

users.js 리팩토링 결과
const express = require('express');
const router = express.Router();
const conn = require('../mariadb')
router.use(express.json())
router.post('/login', function (req, res) {
const { email, password } = req.body;
let loginUser = {};
let sql = `SELECT * FROM users WHERE email = ?`
conn.query(sql,email,
function (err, results) {
loginUser = results[0];
if (loginUser && loginUser.password === password) {
res.status(200).json({
message: `${loginUser.name}님 로그인 되었습니다.`
})
}
else {
res.status(404).json({
message : "이메일 또는 비밀번호가 틀렸습니다"
})
}
}
);
})
router.post('/join', function (req, res) {
if (Object.keys(req.body).length !== 0) {
const { email, name, password, contact } = req.body;
let sql = `INSERT INTO users (email, name, password, contact) VALUES (?, ?, ?, ?)`;
let values = [email, name, password, contact];
conn.query(sql,values,
function (err, results, fields) {
res.status(201).json(results);
}
)
} else {
res.status(400).json({
message: `입력값을 다시 확인해주세요.`
});
}
});
router
.route('/users')
.get(function (req, res) {
let { email } = req.body;
let sql = `SELECT * FROM users WHERE email = ?`
conn.query(sql,email,
function (err, results, fields) {
res.status(200).json(results)
}
);
})
.delete(function (req, res) {
let { email } = req.body;
let sql = `DELETE FROM users WHERE email = ?`
conn.query(sql, email,
function (err, results, fields) {
res.status(200).json(results)
}
);
})
module.exports = router
channel.js DB 연동하기
채널 개별 조회 (SELECT)
.get((req, res) => {
let { id } = req.params;
id = parseInt(id);
let sql = `SELECT * FROM channels WHERE id = ?`
conn.query(sql, id,
function (err, results) {
if (results.length)
res.status(200).json(results)
else
notFoundChannel();
}
)
})
채널 전체 조회 (SELECT)
.route('/')
.get((req, res) => {
const { userId } = req.body;
let sql = `SELECT * FROM channels WHERE user_id = ?`
let channels = []
if (user_id) {
conn.query(sql, userId,
function (err, results) {
if (results.length)
channels = results;
else
notFoundChannel(res);
}
)
}
else
res.status(400).end();
})
채널 등록(INSERT)
- req : body(name, user_id)
.post((req, res) => {
const { name, userId } = req.body;
if (name && userId) {
let sql = `INSERT INTO channels (name, user_id) VALUES (?, ?)`;
let values = [name, userId];
conn.query(sql, values,
function (err, results) {
res.status(201).json(results);
}
)
} else {
res.status(400).json({
message : '요청값을 제대로 보내주세요'
})
}
})