Node.js | 로그인&회원가입 06

m1njae·2022년 2월 24일
0

로그인&회원가입

목록 보기
6/7
post-thumbnail

DB 구축하기

fs모듈을 통해서 파일을 읽어와 로그인과 회원가입을 기능을 구현해보았다면, 이번에는 DB를 통해서 로그인과 회원가입 기능을 구현해보려고 한다. 그러기 위해서 DB를 먼저 구축해주었다.

use login_lecture;

CREATE TABLE users (
id varchar(30) NOT NULL,
password varchar(30) NOT NULL,
name varchar(30) NOT NULL,
in_date datetime default current_timestamp,

PRIMARY KEY (id)
);

INSERT INTO users(id, password, name) 
	values("minjae","1234","민재"),
    ("rkdalswo1021","12345","강민재"),
    ("mj991021","123456","강민재2"),
    ("kangminjae","1021","강민재3");

파일에 담겨져있던 내용을 DB에 옮겨주었고, 파일은 과감히 삭제! 하였다. src폴더에 config폴더를 추가하여 db.js파일을 생성해준다. DB를연동해주기 위해서이다.

const mysql = require("mysql");

const db = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "비밀번호",
    database: "login_lecture",
});

db.connect();

modeul.exports = db;

DB로 로그인&회원가입 구현

기능적인 부분은 구현을 해놓았으니, DB와 연결해주는 작업만 해주면 된다. fs모듈에는 promise가 내장되어있으나, mysql의 경우에는 그러지 않기 때문에 직접 promise를 만들어 주었다. 그리고 로그인 할때와 회원가입을 할 경우, 로그인은 DB에 있는 데이터를 받아와서 대조하고, 회원가입은 DB에 데이터를 넣기 때문에 각기 다른 쿼리를 통해서 구현을 해준다.


//in UserStorage.js

const db = require("../config/db");

class UserStorage{
    
    static getUsersInfo(id){
        return new Promise((resolve, reject) =>{
            const query = "SELECT * FROM users WHERE id=?;";
            db.query(query,[id], (error, data) =>{
                if (error) reject(error);
                resolve(data[0]);
            });
        });
        
    }
 

    static async save(userInfo){
        return new Promise((resolve, reject) =>{
            const query = "INSERT INTO users(id, password, name) VALUES(?, ?, ?);";
            db.query(query,
                [userInfo.id, userInfo.password, userInfo.name], 
                (error) =>{
                if (error) reject(error);
                resolve({success: true});
            });
        });   
    }
}

module.exports = UserStorage;
 

환경 변수 관리

환경 변수는 OS 운영시스템에 등록되는 변수이므로, OS 전반에 걸쳐 모두 적용된다는 의미로 환경 변수라고 한다. 환경 변수를 관리해주는 이유는 팀 단위로 개발을 진행하게 되는데, 경우에 따라서 개발환경이 다를 수 있으며 각 운영체제마다 환경 변수를 등록해주는 방법이 다르다. 그래서 node.js에서 제한한 방법이 존재하는데, 그것이 dotenv 모듈을 사용하는 것이다.

const dotenv = require("dotenv");
dotenv.config();

외부에서 노출되어서는 안되는 것들을 환경 변수로 감추면서 보안을 향상시킬 수 있게 된다.

.env

PORT = 3000

DB_HOST ="localhost"
DB_USER ="root"
DB_PASSWORD="비밀번호"
DB_DATABASE="login_lecture"
//in db.js

const mysql = require("mysql");

const db = mysql.createConnection({
    host: process.env.DB_HOST,
    user: process.env.DB_USER ,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_DATABASE,
});

db.connect();

module.exports = db;

https://github.com/m1njae/login-lecture

참고

[Node.js] 백엔드 맛보기

profile
할 수 있는 것부터 차근차근, 항해자의 공부 기록공간

0개의 댓글