본문 바로가기

TIL

20210703 [항해 27일 차] 빗나감

당신이 늘 명중한다면, 표적이 너무 가까이에 있거나 너무 크기 때문이다.
- 톰 허쉬필드 -
  • 요 근래 최악의 날이다. 노력해서 오류를 고치고 MySQL에 데이터를 삽입하려 했으나 실패했다. 하던 대로 mongodb에 추가하든지 강의보고 users 추가한 것처럼 따라 하든지 해야 한다. 돌아다니는 동영상 몇 개 보고 글도 봤는데 그것만으로는 해결하기 어렵다. 예전에 Insomnia 썼던 방식으로 똑같이 추가하면 될 것 같은데 기억이 잘 안 난다. 
    어제 API 만드는 게 익숙해진다는 것은 다 착각인가 보다. 2강도 제대로 마무리 못하고 해설을 보면서 하고, 3강조차도 마무리하지 못했다. 4강으로 넘어갔는데 3강에서 goods가 추가되지 않는다면 4강으로 넘어갈 수 없는 구조라 막막하다. 열심히 보다 효율적으로 시간을 보내고 싶다.
  • docker 사용해보고, 간단한 명령어를 통해 MySQL도 실행해봤다. 터미널을 종료할 경우 MySQL이 같이 꺼진다고 했는데 중간에 무시하고 껐다가 오류 뜨고 다시 돌아가면서 해결하다 보니 3시간은 흘렀다. 문제가 생겼을 땐 프로젝트를 다시 시작하는 게 가장 빠른 것 같다. 그러기 위해선 중간중간 잘 백업해두는 습관이 필요해 보인다.

테이블이 생성되지 않아 생기는 문제인 것 같다. 생성을 안해서 없는 것 같아 강제로 넣어주고 싶은데 방법을 모르겠다.

터미널에 MySQL 실행 명령어 입력

docker run --rm -p 3306:3306 --name test-db -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7 mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

 

port: 3306 MySQL Community Swerver (GPL)뜨면 다음으로 넘어간다.

 

MySQL 서버 끄면 데이터가 날아감

다시 켜서 데이터베이스를 먼저 생성해야 함

npm i sequelize mysql2 -S

npm i sequelize-cli -D

npx sequelize init

 

이후

npx sequlize db:create

npx sequlize db:migrate

요 두 개를 실행해서 index.js와 migrations를 생성해준다.

 

유저 모델 생성 명령어 : 모델 만들기 아래 명령어를 치면 goods라는 모델과 migrations 내부에 숫자로 형성되는 js파일이 생긴다.

npx sequelize model:generate --name goods --attributes name:string,thumbnailUrl:string,category:string,price:decimal

 

 

Mongodb에서 Mysql로 바꿀 시 바뀌는 것들

 

const User = require("./models/user");

const { User } = require("./models/index");

user와 직접 연결하는 것이 아닌 index를 통해 연결된다. (직접 연결 시 복잡한 과정을 거쳐야 함)

const existUsers = await User.find

const existUsers = await User.findAll

find를 제공하지 않기에 findAll사용, 사용 시 where 조건이 있다.

 

const existUsers = await User.find({

      $or: [{ email }, { nickname }],

    });

    if (existUsers.length) {

      res.status(400).send({

        errorMessage: "이미 가입된 이메일 또는 닉네임이 있습니다.",

      });

      return;

    }

    const user = new User({ email, nickname, password });

    await user.save();

    res.status(201).send({});

  } catch (err) {

      console.log(err)

      res.status(400).send({

        errorMessage: "요청한 데이터의 형식이 올바르지 않습니다."

    })

  }

})

 

 

'TIL' 카테고리의 다른 글

20210705 [항해 29일 차]  (0) 2021.07.06
20210704 [항해 28일 차]  (0) 2021.07.04
20210702 [항해 26일 차] Node.js 심화반 시작  (0) 2021.07.03
20210701 [항해 25일 차]  (0) 2021.07.02
20210630 [항해 24일 차]  (0) 2021.07.01