이제 기획도 거의 마쳤겠다 기획한 프로젝트의 데이터베이스부터 짜보았다.생각 보다 데이터베이스 관계가 복잡했고.. 테이블 개수도 엄청 많이 나왔다.이렇게 대량의 테이블을 관리해본적은 한번도 없는데.. 쿼리 짤때..조금 걱정이 든다 ㅠㅠ먼저 SQL로 코드를 짜고 그다음 m
DB 설계를 대략 마쳤으니 이제 대략적인 API설계를 해보자!크게 users, courses, reviews, talks, studies, projects가 있다.
typeorm-model-generator를 사용하면 워크벤치에서 만든 테이블을 자동으로 Entity로 생성할 수 있다! 완전 꿀!!
create-user.dtocreate user dto를 만들어서 받을 데이터 타입을 정해주었다. dto에서는 class-validor를 이용해 데이터가 email인지, string인지 자동으로 검증해 줄 수 있다.아이디와 닉네임이 이미 존재 할 경우 Unauthori
local login, logout 함수 구현local auth guard, strategy, serialize 모듈 생성 후 auth module provider에 주입.logged, not logged guard 생성google strategy 생성google lo
return 되는 json 값을 내가 원하는 데이터만 노출 시키고 싶었다. 예를 들어 비밀번호를 노출 시키고 싶지 않으면 Entity에서 @Exclue()나 select: false를 해도되지만, 비밀번호 검증과 같은 함수를 구현할때 다시 비밀번호를 select해서 u
비밀번호를 까먹었을 때 해당 이메일로 임시비밀번호를 이메일로 보내주도록 해보자. token방식으로 하면 비밀번호를 변경할 수 있도록 url을 보내줄 수 있지만 나는 session방식을 이용하기 때문에 그냥 임시비밀번호를 발급해 메일로 보내주고 해당 유저의 비밀번호를 임
버킷 만들기 IAM - 정책만들기 ![](https://images.velog.io/images/suyeonpi/post/78ed15fb-bffa-4a1b-8743-56acd6304a15/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%8
아직 SQL 문법에 익숙하지 않았는 터라 TypeORM 쿼리 짜는 것에 시간이 꽤 걸렸다.우선 내가 하고 싶었던 쿼리는 해당 강의에 리뷰개수와 리뷰평점을 받아오는 것이었다.처음 작성했던 잘못된 코드 :이렇게 했더니 리뷰테이블에 데이터가 하나도 없으면 course데이터가
원래는 해당 강의 id를 받아 내가 북마크 했는지 안했는지만 따로 체크하는 api를 만들었는데, 전체 강의 get함수에서 내가 북마크 했는지 안했는지를 덧붙여 체크 하도록 변경해야했다.처음 작성한 잘못된 코드 : 처음엔 이렇게 Liekd라는 subquery를 만들어서
페이지네이션을 구현하기 위해 take, skip을 사용했었다.https://typeorm.biunav.com/en/select-query-builder.html복잡한 쿼리 구문에는 limit과 offset이 잘 작동하지 않는다는 typeOrm문서를 보고 tak
orderBy를 이용해 글이 생성 순서대로 정렬되길 원했다. 하지만 날짜 반환은 초단위는 제외한 년,월,일만 반환하고 싶었다.처음에는 년,월,일만 반환해도 orderBy했을때 시간까지 순서대로 정렬이 될줄 알았지만, 시간까지 반환해야지 시간순서대로 정렬이 되었다.그래서
https://velog.io/@suyeonpi/Dimelo-Project-nodemailer%EB%A1%9C-%EC%9D%B4%EB%A9%94%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0-%EC%9E%84%EC%8B%9C%EB%B9%84
https://velog.io/@suyeonpi/Dimelo-Project-passport-local-google-github-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84-nest.js이전 포스팅에서 나는 passport
우리 사이트는 유저가 탈퇴하더라도 유저가 작성한 리뷰나 글은 사이트에 남도록 기획하였다. 그래서 DB를 짤때부터 CASCADE는 RESTRICT로 설정하였다.그리고 유저는 탈퇴하더라도 유저의 row를 삭제하지 않고 deletedAt에 해당 탈퇴한 날짜를 추가하도록 하는
docker image를 빌드할때 image크기를 줄이기 위해서 alpine버전을 이용한다. 하지만 alpine버전을 이용해서 bcrypt 패키지를 사용하면 빌드 오류가 뜬다. 왜냐하면 bcrypt는 파이썬을 필요로 하기 때문이다. 구글링을 해보니 bcrytjs를 이
aws s3 multer로 이미지를 업로드 하려고 하니 다음과 같은 오류가 났다.Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1기존 코드다음과 같이 수정하니 정상적으로
pm2를 이용하여 터미널을 끄더라도 node.js프로젝트를 계속 운영해보도록 하자. docker container를 사용하면 pm2, forever와 같은 서비스를 이용 안해도 되는줄 알았지만.. 알아보니(제로초님께 질문해보니) kubernetes를 썼을 때 비로소 p
클라이언트와 백엔드 모두 배포하고 https까지 적용하였는데 쿠키가 프론트로 가지않는 문제가 생겼다. 처음엔 cors오류 라고 생각해서 프론트와 백엔드 cors도 다 맞췄지만 그래도 오지 않았다.이런 오류들이 나와서 처음에는 sameSite: none, secure:
https://velog.io/@suyeonpi/Dimelo-Project-nest.js-docker%EC%97%90-pm2-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0지난 내 글을 보면 pm2를 fork 모드가 아닌 cluster모드로
Docker와 Docker hub를 이용한 무중단 배포글을 찾는데 힘이 들어 ..나같이 Docker와 Docker hub를 이용해서 무중단 배포를 하려는 사람들을 위해 도움을 주고자 글을 써보려고 한다..아직 Docker초보이고..아마도 더 좋은 방법이 있을지도 모르니
프로젝트 명: Dimelo (IT 강의 수강평공유 & 팀빌딩 커뮤니티)프로젝트 홈페이지: https://dimelo.iogithub: https://github.com/dimelo-project프로젝트 기간: 2020.12.13 - 2021.03.12