JS
[JS] 환경변수 설정방법
* 목적 : 노출하면안되는 port 번호, db암호, api key등을 감춤 * 설치방법npm install dotenv//root dir : .envDB_HOST=your_remote_hostDB_USER=your_usernameDB_PASSWORD=your_passwordDB_NAME=your_databasePORT=3000 * 사용class MySqlRepository { constructor() { this.pool = mysql.createPool({ host: process.env.DB_HOST, user: process.env.DB_USER, password: process.env.DB_PASSWORD, ..
[멘토링] 24.8.23.
* 도자기를 잘만드려면 도자기를 많이 만들어야한다.- pr 30개씩 보고 읽기 * 학습후 구현 vs 야생형 구현- 일단 요구사항을 토대로 다 만들어본다- 리팩토링을 하는 과정에서 공부를한다- 개선과정을 글로쓴다.
![[Nest JS] 환경변수 설정 / configuration property is not defined 해결 / github 캐시 지우는법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDYs19%2FbtsI7myLz7f%2FkYgNMylKekHzHkydR0Rp80%2Fimg.png)
[Nest JS] 환경변수 설정 / configuration property is not defined 해결 / github 캐시 지우는법
npm install -g win-node-envnpm install config --save* default : 노출되도 되는 정보를 넣어준다. *devlop : 개발환경에서 숨겨야하는 정보를 넣어준다.-싱크로나이즈 : 컬럼추가시 db 재생성 옵션 -> 운영에서는 절대 사용금지 *production : 실제운영환경 * config 값 실제 사용하기* main > port번호 주입import * as config from 'config';async function bootstrap() { const app = await NestFactory.create(AppModule); const serverConfig = config.get('server'); const port = serverConfig.p..
![[Nest JS] 로그 구현](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIZZVd%2FbtsI6Nw5hif%2F667Kxen4WQrv899uYgTcJk%2Fimg.png)
[Nest JS] 로그 구현
* 현업에서는 기능구현 -> 로그 구현 식으로 진행합니다. * 시작시 로그남기기async function bootstrap() { const app = await NestFactory.create(AppModule); const port = 3000; await app.listen(3000); Logger.log(`Application running on port ${port}`);}bootstrap(); * 컨트롤러1. 멤버변수로 logger 생성@Controller('boards')@UseGuards(AuthGuard())export class BoardsController { private logger = new Logger('BoardController'); constructor(pri..
![[Nest JS] 자신이 생성한 게시물만 삭제](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKVd2r%2FbtsI6Qf6v94%2FNG5xDejN97U9G1UrNjSzDK%2Fimg.png)
[Nest JS] 자신이 생성한 게시물만 삭제
* 컨트롤러마찬가지로 @getuser로 매개변수 추가@Delete('/:id')deleteBoard(@Param('id', ParseIntPipe) id: number , @GetUser() user : User){ //제공되는 파이프로 검사해주시고 return this.boardsService.deleteBoard(id, user);} * 서비스delete 조건에 인자로 받은 user만 추가async deleteBoard(id : number, user:User){ const result = await this.boardRepository.delete({id, user}); //기본제공되는 delete 사용 if(result.affected ===0){ //영향받은게 0개 === 못찾은경우 예외..
![[Nest JS] 특정 유저의 게시물 가져오기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIhSZD%2FbtsI6W8nvtn%2FyHx0bwaBCvyGC2mT0H7kg0%2Fimg.png)
[Nest JS] 특정 유저의 게시물 가져오기
* 문제 : 유저2의 토큰으로 조회시, 모든 게시글이 조회됨 * 컨트롤러@GetUser로 user 정보를 받은후, 인자로 추가@Get()getAllBoard(@GetUser() user : User){ return this.boardsService.getAllBoards(user);}* 서비스인자로 받아온 user.id를 이용해where절 이용해게시글 filterasync getAllBoards(user : User){ //raw sql생성, board table에서 할거임 const query= this.boardRepository.createQueryBuilder('board'); //로그인한 유저의 게시글만 query.where('board.userId = :userId', {userId:..
![[Nest JS] 유저-게시글의 관계 형성, 게시글 생성시 유저정보 추가](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuKCMZ%2FbtsI7hj1hh3%2FeTKCwBNMP9fYkdI369OUv1%2Fimg.png)
[Nest JS] 유저-게시글의 관계 형성, 게시글 생성시 유저정보 추가
* 각각의 클래스에 각자의 변수를 넣어야함.@Entity()@Unique(['username'])export class User extends BaseEntity{... //상대의타입, 상대방에서 나를 부르는 별칭, this(user)를 가져올때 상대방(board)도 가져오도록 @OneToMany(type => Board, board => board.user, {eager: true}) boards: Board[]@Entity()export class Board extends BaseEntity{ ... @ManyToOne(type => User, user=>user.boards, {eager: false}) user: User; * 게시글 생성시 유저 정보 넣기* 컨트롤러여기서 이전에 만..