*목적 : nestjs 기반의 crud, 인증, 결제, 채팅 기능을 구현
1. 기본 setting과 docker로 pgadmin 연결
node, nest, docker 설치 후 터미널에 new nest 생성폴더명
//nvm 으로 node버전 변경하기(node version management)
//nvm을 사용하려면 기존 사용하는 node의 전역적 모듈을 모두 삭제해주고 실행해야함
______________________________________________________
1.brew로 nvm 설치
brew install nvm
______________________________________________________
2.환경변수 설정
mkdir ~/.nvm //~/에 .nvm 설치
vi ~/.bash_profile //~/.bash_profile을 vi 편집기로 열고 환경 변수 설정
//하단 세줄 입력후 esc + wq로 저장후 나오기
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
source ~/.bash_profile //터미널 프로파일에 적용
nvm -v //설치 후 버전 nvm check
______________________________________________________
3.node.js설치 및 버전 확인
nvm install 10
nvm use 10 //Now using node v10.10.0
node -v //v10.10.0
2.생성된 '생성폴더명' 하단에 docker-compose.yaml 작성
=>.env 작성 하여 환경변수 작성 (host,port,user,password,db)
=>database.module.ts생성
nestjs/config, hapi/joi 설치 후 app.module.ts에 ConfigModule에 validation imports
//기초 code build 순서
-위에서 아래(선언되지 않은 함수나 상수 없으면 에러 난다)
- 등호 (=)기준으로 왼쪽에서 오른쪽
- ..은 하위 메서드 호출
-
//nest 자주 사용하는 기초명령어
nest --help //모든 nest 명령어
nest g res ABC //ABC라는 이름의 res(crud생성가능)을 generate(생성)
nest g mo ABC //ABC module 생성
nest g s ABC //ABC service 생성
nest g co ABC //ABC controller 생성
//docker-compose.yaml
services:
postgres:
image: postgres
restart: always
environment:
# To connect to the PostgreSQL database run the following command
# psql -h localhost -p 15432 -U root -d ecommerce
- POSTGRES_USER=test_user
- POSTGRES_PASSWORD=test_pass
- POSTGRES_DB=test
ports:
- "15432:5432"
# volumes:
# # Pass volume named mysql-data to mysql container
# - "postgresql-data:/var/lib/postgresql/data"
networks:
- postgres-network
pgadmin:
depends_on:
- postgres
image: dpage/pgadmin4
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: "admin@admin.com"
PGADMIN_DEFAULT_PASSWORD: "admin"
ports:
- "16543:80"
networks:
- postgres-network
volumes:
postgresql-data:
driver: cio
driver_opts:
profile: "POSTGRESQL"
networks:
postgres-network:
driver: bridge
vsc 사용한다면 새로운 터미널 열어주고, docker-compose up 명령어로 docker 컨테이너 생성
password authentication failed for user nestjs dockerpose //동일 이름 컨테이너 있을시 생기는 오류 msg
=> 기존 생성된 컨테이너가 있으면 docker-compose down 해 주고 다시 docker-compose up
기본 엔티티를 생성했다면, docker로 연 pgadmin 에 접속 후 server create 해주기
2. bcrypt 설치후 user, product,auth - service, module, controller, entity 생성 후
//entity tip
@PrimaryGeneratedColumn('uuid') //uuid nestjs 내장
@BeforeInsert() //db에 저장전 해당 메서들를 실행
async hashPassword(){
this.password = await bcrypt.hash(this.password, 10);
}
user service - email검색, id검색, user생성
auth controller - signup, login 구현
auth service - signup, user인증(password암호화 디코딩),
3. auth 내 guard 문 생성(AuthGuard)후 해당 strategy 파일 생성, validate 함수 생성 하여
해당 사용자 권한이 사용되는 controller에 useGuard주입
Guard 의 주요 기능
-사용자 권한(authentication)확인을 위한 기능 ,
-생성 guard를 controller 에 붙여주어 사용
@UserGuards(해당가드) //or @AuthGuard(‘파일 내부 strategyname’)
참고한 링크: https://lts0606.tistory.com/624
4. useGuards, strategy를 사용하여 auth controller의 login 함수 수정
5. jwt, passport-jwt 로 login시 토큰 생성
(module에 configService => 환경변수(.env)를 동적으로 처리, ConfigService에서 환경 변수 엑세스하려면 ConfigModule을 가져와야함)
6.jwt useGuards 생성하여 get profile 접근권한 생성
7.node mailer 사용하여 email send service 생성후 , 생성 된 service test( nodemailer 동작하는지 확인),
회원가입시 token 생성 하는 email send service 생성
8.email confirm controller 생성 :
7에서 생성된 token을 decoded하여 email을 찾아 해당 user의 email confirm 관련된 db boolean값 변경
'A.개발관련자료' 카테고리의 다른 글
Dart 기초(2)-2 (0) | 2025.04.03 |
---|---|
WARNING: expo-cli has not yet been tested against Node.js v18.12.1. (0) | 2025.04.03 |
nvm으로 node 버전 변경 (0) | 2025.04.03 |
toast ui editor viewer (0) | 2025.04.03 |
README.md 작성법 정리 (0) | 2025.04.03 |