1. 기존에 src > databases > user.json파일에 저장했던 회원가입 정보들을 삭제하고, db와 연결할 파일 생성하기

  -src > config 폴더 생성 > config 폴더 내에 db.js 파일 생성

// db.js

const mysql = require("mysql");

const db = mysql.createConnection({
  host: "AWS RDS에 만든 데이터베이스의 엔드포인트 복사하여 붙여넣기",
  user: "데이터베이스 생성 시 설정했던 유저 이름",
  password: "데이터베이스 생성 시 설정했던 비밀번호",
  database: "데이터베이스 생성 시 설정했던 데이터베이스 이름"
});

db.connect();

module.exports = db;

 

 

2. UserStorage.js 파일에서 로그인과 회원가입을 json 파일로부터 file system을 통해 받아오던 것을 db와 연결하기

// UserStorage.js

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

class UserStorage{

  static getUserInfo(id) {
    return new Promise((resolve, reject) => {                          // 성공 시 resolve, 실패 시 reject 반환
      const query = "SELECT * FROM users WHERE id = ?;";      // 로그인 시행 시 db로부터 로그인 정보를 불러올 쿼리문 작성
      db.query(query, [id], (err, data) => {                              // 쿼리문에서 ?안에 들어갈 정보를 [id]로 설정
        if (err) reject(`${err}`);                                             // error가 [Object ocject]로만 뜨지 않고 문자열로 뜰 수 있도록 처리
        resolve(data[0]);
        // 로그인에서 id = id인 것이 있다면 성공한 것으로, data를 불러오는데, data가 [{id:~, name:~, psword:~}]형식이므로 첫번째 것만 불러올 수 있도록 data[0]으로 처리
      });
    });
  }
  
  static async save(userInfo) {
    return new Promise((resolve, reject) => {                 // 성공 시 resolve, 실패 시 reject 반환
      const query = "INSERT INTO users(id, name, psword) VALUES(?, ?, ?);";
      // 회원가입은 회원가입 창에서 입력한 id, name, psword를 받아서 users 테이블에 INSERT하는 것으로 처리
      db.query(query, [userInfo.id, userInfo.name, userInfo.psword], (err) => {
        if (err) reject(`${err}`);
        resolve({ success: true });
        // 성공하면 따로 보낼 데이터는 없고 msg만 { success: true }로 전달
      });
    });
  }
  
  moduel.exports = UserStorage;

 

 

3. User.js파일에서 login에 대한 동작을 try, catch문으로 변경

// User.js

class User{

  ...
  
  async login() {
    const client = this.body;
    try {
      const {id, psword } = await UserStorage.getUserInfo(client.id);
      if (id) {
        if (id === client.id && psword === client.psword) {
          return { success: true };
        }
        return { success: false, msg: "비밀번호가 틀렸습니다." };
      }
      return { success: false, msg: "존재하지 않은 아이디입니다." };
    } catch(err) {
      return { success: false, msg: err };
    }
  }
  
  ...
}

 

 

4. 결과

  - 회원가입

  - 정보 입력 후 SIGN UP 클릭 시 데이터베이스에 해당 정보가 저장됨

 

  - 로그인

  - 새로 회원가입했던 id와 비밀번호로 로그인을 시도하면 성공

  - 로그인 성공 시 이동하도록 지정한 루트 페이지로 이동함

+ Recent posts