전체 글 251

23/11/21 TIL __ ESM과 CommonJs 차이 및 ESM방식으로 변경 실패.

🐣상황 오늘부터 뉴스피드 프로젝트가 시작되었다. 첫날이라 초기 셋팅과 방향에 대한 회의를 오래 진행했는데, 지난번 과제들에서 require를 이용해 express와 sequelize 를 사용했기 때문에, 이번 과제에서는 모듈을 사용해 보고 싶었다. 🐣액션 모듈을 사용하기 위해 나는 아래와 같은 행동을 했다. package.json 파일에 type:module 을 설정했다. index.json 파일에 있는 require 로 사용한 애들을 모두 export로 바꿨다. config.json 파일에서 dotenv를 가져올때 export로 가져와 환경변수로 사용했다. config.js 파일로 파일 형식을 바꾼 뒤에, 안에 내용물을 js 타입으로 변경했다. 그러나 예상과 달리 DB를 생성하는 아래의 명령어는 작동하..

TIL 2023.11.22

23/11/20 TIL __ erd cloud 사용법!! erd 만들기

🐣상황 개인과제가 끝나고 해설영상이 주어졌다. erd 를 처음으로 해봐서 이게 맞나 싶었던 부분들이 많았는데, 제대로 모르고 쓴게 많아서 정리하고자 한다. 🧡 엔티티 정의 가능한 사물 또는 개념을 말한다. 데이터베이스의 테이블이 엔티티로 표현된다. 💛 데이터 베이스 정규화 데이터가 일관성을 띄도록 한다. 최소한의 데이터 중복을 가지도록 한다. 최대한의 데이터 유연성을 가지도록 한다. 테이블들을 나누어 불필요한 중복을 최소화 한다. 따라서 유저이름을 product 테이블에 직접 컬럼으로 넣지 않고, user 테이블에 있는 내용을 연결된 외래키로 가져오는 방법을 이용한다. 🩵 식별자 관계 실선으로 표현된다. 부모 자식 관계에서 부모 foreign key로 자식의 private key로 설정한다. 💜 비식별자..

TIL 2023.11.20

23/11/19 TIL __ Joi 를 활용한 유효성 검사 feat. Joi를 사용하는 이유

🧐 상황 개인과제에서 에러처리와 더불어 시도해 본게 있다. 유효성 검사를 해주는 좋은 라이브러리들이 있다고 해서 다양한 라이브러리들 중 Joi를 시도해 봤다. Joi를 시도한 이유는 많이 사용하는 라이브러리 때문이였다. 하지만 Joi 외에도 다양한 validation 라이브러리가 존재한다. Joi 스키마를 정의하여, 데이터 객체의 유효성을 검사한다. express-validator Express 웹 프레임 워크에 특화. 주로 HTTP 요청의 데이터의 유효성을 검증한다. Validator.js 문자열 유효성 검사에 특화. express-validator도 다뤄보고 싶지만, 오늘은 Joi에 대해서만 다뤄보겠다. 🐣액션 먼저 Joi를 사용하려면 라이브러리를 설치해야 한다. npm i joi 나의 경우 joi를..

TIL 2023.11.19

23/11/18 TIL __ 에러처리 미들웨어 구현

🐥상황 개인과제를 1차적으로 완성하고 공유했을때, 에러처리에 대한 부분을 따로 미들웨어로 빼면 좋을 것 같다는 말을 들었다. 에러처리를 미들웨어로 따로 빼게되면, 모든 에러를 한번에 관리할 수 있기 때문이고, 동일한 에러를 여러번 발생하는 경우, 같은 함수로 여러번 재사용 할 수 있기 때문이다. 🤠 시도 일단 에러처리 미들웨어를 구현하기 앞서 next 라는 애를 이해해야 했다. next() : 미들웨어 작동에 있어서 다음으로 넘기는 역할을 한다. try 문에서 에러가 발생하는 경우 throw 를 통해 특정 에러를 넘길 수 있다. 그럼 catch문에서 던졌던 에러를 받아서 next로 다음 미들웨어로 넘겨준다. 미들웨어로 넘어간 에러는 각 에러에 해당하는 메세지를 내보낸다. 상품 수정하는 라우터를 예로 들어..

TIL 2023.11.18

23/11/17 TIL __ 시퀄라이즈 마이그레이션 수정 sequelize migration

🧐 상황 sequelize-cli 와, aws rds를 이용해 개인과제를 진행하던 중, 이미 만든 테이블을 수정하고 싶었다. birth_year, birth_day, birth_month, 이 세가지의 컬럼을 삭제하고, birth_date 라는 컬럼을 추가하며, 타입도 date로 바꾸고 싶었다. 🚗 액션 Sequelize 공식문서를 찾아보니, 아래의 명령어를 통해 수정 파일을 만들 수 있다고 한다. npx sequelize-cli migration:generate --name 파일이름적기-테이블명 예시 npx sequelize-cli migration:generate --name modify-user 그럼 아래와 같은 파일이 생성되는데, up에는 새로 추가하거나 삭제할 내용을 작성하면 된다. down 에..

TIL 2023.11.17

23/11/16 TIL __ 3진법 뒤집기 (프로그래머스) feat. ^ xor연산자

프로그래머스 문제중 3진법 뒤집기라는 문제를 함께 풀기로 했는데, 사실 3진법이 뭔지 몰라서 찾아봤다. 👻 10진법을 n진법 으로 바꾸기 우리가 보통 사용하는 수는 10진법이고, 3진법은 0, 1,2 까지 세고, 그 다음 자리수로 10 이렇게 올라가는 것이다. 10진법을 n진법 으로 변환하는 계산 방법을 보니, 10진법인 수를 n으로 나누고, 몫 부터 나머지 값들을 모아보면 n진법에 해당하는 숫자가 나오는 방식이다. 아래의 사진을 보면 좀더 이해가 쉬울 것 같다. 참고한 블로그(https://m.blog.naver.com/theo5970/221840365072) 그래서 while 문으로 문제에서 주어진 수 n을 3으로 나머지 연산을 하며 더하기 할당으로 풀어주었다. 이렇게 하면, 3진법인 수를 뒤집은 결..

TIL 2023.11.16

23/11/15 TIL __ 시퀄라이즈 테이블 조인하기 sequelize table join (2개 테이블)

sql에서 사용하는 쿼리가 아닌, 시퀄라이즈를 이용해 사용하는 경우, 각 테이블을 어떻게 조인할 수 있는지에 대한 부분을 오늘 다뤄보려고 한다. 🔮 2개의 테이블 조인하기 🚗 시퀄라이즈 조인은 기본 inner join 이라고 하니 참고하자. 아래의 형식으로 조인하면 된다. const listData = await Products.findAll({ include: [{ model: 조인하려고 하는 테이블 명, attributes: ['방금 지정한 테이블에서 가져올 컬럼명', '컬럼명을 원하는만큼 가져오기'], where: { //조건에 맞춰서 가져올 경우 사용. id: 3, //id가 3인 경우만 가져오겠다는 말. } }], order: [['updatedAt', sort]], // 정렬 순서 지정. })..

TIL 2023.11.15

23/11/14 TIL __ 미들웨어로 로그인 인증하기 (access token)

우리가 흔히 쓰는 로그인 기능. 어떤식으로 동작하고 있었을까? 다양한 방식이 있지만 오늘은 jwt를 사용한 access token 방식을 다뤄보려고 한다. 이게 어떤건지 잘 모르겠다면, 아래의 글도 참고하면 좋을것 같다. https://gabojok.tistory.com/207 🚗 JWT 발급하기 const token = await jwt.sign( { authorization: loginUserData.id }, process.env.SECRET_KEY, { expiresIn: '12h' } ) 이게 끝이다.!! 라이브러리를 왜 사용하는지 정말 이번 챕터에서 많이 느껴졌다. 딱봐도 간단해 보이지 않는걸, 아주 간단하게 만들어 주는 고마운 애들인것 같다. 나의 경우 회원 로그인 라우터 안에 만들어 주었고..

TIL 2023.11.14

23/11/13 TIL __ 시퀄라이저 관계 설정.

시퀄라이저로 2개의 테이블을 만들고 연결하려고 했는데, 개념적인 부분이 정말 어려웠다. 기본키는 뭐고, 참조키는 뭐고, 어떤식으로 연결하는걸까? 그것에 대해서 살펴보자. 🚗 기본기 (primary key) - 테이블에 있는 유일무이한 데이터 구분하기 위한 것. - 오직 한개만 지정할 수 있다. - 다른 열과 명확하게 구분될 수 있는 열에 포함된 유일무이한 데이터를 의미. - null 가질수가 없다. 중복값도 불가하다. - 싱글필드 혹은 멀티 필드로 구성이 가능 하다. 🚗 외부 참조키 (Foreign key) - 다른 테이블 또는 같은 테이블에서 식별될 수 있는 행을 포함한 필드. - 테이블 간의 관계 설명 가능. - 학생 테이블이 먼저 있고, 수강내역 테이블이 있다고 해보자. - 참조될 값은 참조하려 하..

TIL 2023.11.13

23/11/12 TIL __ [SequelizeConnectionError]: Too many connections 에러 aws rds 에러

에러그만!!!!!😠 이라고 외치고 싶었다... 어제부터 계속해서 오늘 점심까지는 계속해서 에러만 만나고 있었다... 이정도면 내 코드가 매우 문제가 있는것 같은데, 비교해 보면 강의의 예제 코드와 동일하다. 수많은 에러들 중 복잡했던 [SequelizeConnectionError]: Too many connections 에러에 대해 다뤄보려 한다. 🚌 상황 회원가입 기능 테스트 하면서 테이블에 데이터가 너무 많아져 보기 힘들었다. 시퀄라이즈 페이지에 가보니 delete 쿼리 메소드가 있어서 시도해 봤다. 조건 하나하나 귀찮게 하고 싶지 않아서 아래의 메소드로 진행했는데, 문제가 시작되었다. 🚨에러🚨 어떤 명령을 해도, 아래의 🚨에러🚨가 발생했다. Executing (default): SELECT `id`..

TIL 2023.11.12