묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결따라하며 배우는 NestJS
async await 관련 질문입니다.
좋은 강의 영상 감사합니다. controller에서 service함수를 이용할때에는 async await 를 안써줘도 괜찮나요? 괜찮은것 같은데 혹시 그 이유는 무엇일까요..?
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
AWS에서 MongoDB 설치
안녕하세요.15장을 듣다가 궁금해서 Node와 관련이 없는 질문을 드립니다.MySQL은 RDS를 쓴다고 하셨는데 MongoDB를 EC2에서 분리하여서 설치하는 서비스는 무엇인가요?감사합니다.
-
미해결Spring Boot JWT Tutorial
BCrypt 암호화하는 과정이 궁금합니다.
에러 안나고 결과도 잘 나오는데LoginDto에 password가 어떻게 user 테이블에 있는 암호화된 비밀번호랑 비교돼서 동일한 결과값으로 판단돼서 토큰이 나오는지 궁금합니다. 제가 아직 부족해서인지 따라가면서 봐도 입력받은 password로 암호화하는 작업이 안보여서요
-
미해결따라하며 배우는 NestJS
강의자료 다운로드 관련
안녕하세요! 강의 잘 듣고 있는 수강생입니다.강의자료 다운 받으면 pdf, xml 모두 폴더가 비어 있습니다.(DS_store 파일만 있어서요..)혹시 제가 모르는 부분이 있으면 알려주시면 감사하겠습니다!
-
해결됨Spring Boot JWT Tutorial
sql 에러
@Entity @Table(name = "users") @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class User { @JsonIgnore @Id @Column(name = "userId") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long userId; @Column(name="userName", length = 50, unique = true) private String userName; @JsonIgnore @Column(name = "userPw", length = 100) private String password; @Column(name = "nickName", length = 50) private String nickName; @JsonIgnore @Column(name = "activated") private boolean activated; // @ManyToMany와 @JoinTable은 User객체와 권한객체의 다대다 관계를 // 일대다, 다대일 관계의 조인 테이블로 정했다는 뜻입니다. @ManyToMany @JoinTable( name = "user_authority", joinColumns = {@JoinColumn(name = "userId", referencedColumnName = "userId")}, inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "authority_name")}) private Set<Authority> authorities;package com.example.jwt_security.entity; import lombok.*; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "authority") @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class Authority { @Id @Column(name="authority_name", length = 50) private String authorityName; }Hibernate: drop table if exists authority CASCADE Hibernate: drop table if exists user_authority CASCADE Hibernate: drop table if exists users CASCADE Hibernate: create table authority ( authority_name varchar(50) not null, primary key (authority_name) )Hibernate: create table user_authority ( user_id bigint not null, authority_name varchar(50) not null, primary key (user_id, authority_name) )Hibernate: create table users ( user_id bigint generated by default as identity, activated boolean, nick_name varchar(50), user_pw varchar(100), user_name varchar(50), primary key (user_id) )Hibernate: alter table users add constraint UK_k8d0f2n7n88w1a16yhua64onx unique (user_name)Hibernate: alter table user_authority add constraint FK6ktglpl5mjosa283rvken2py5 foreign key (authority_name) references authorityHibernate: alter table user_authority add constraint FKhi46vu7680y1hwvmnnuh4cybx foreign key (user_id) references users insert into users (userName, userPw, nickName, activated) values ('admin', '$2a$08$lDnHPz7eUkSi6ao14Twuau08mzhWrL4kyZGGU5xfiGALO/Vxd5DOi', 'admin', 1); insert into users (userName, userPw, nickName, activated) values ('user', '$2a$08$UkVvwpULis18S19S5pZFn.YHPZt3oaqHZnDwqbCW9pft6uFtkXKDC', 'user', 1); insert into authority (authority_name) values ('ROLE_USER'); insert into authority (authority_name) values ('ROLE_ADMIN'); insert into user_authority (user_id, authority_name) values (1, 'ROLE_USER'); insert into user_authority (user_id, authority_name) values (1, 'ROLE_ADMIN'); insert into user_authority (user_id, authority_name) values (2, 'ROLE_USER');여기서 into 뒤에가 에러가 생기네요 테이블까지는 제대로 생성됐는데 왜그러는지 모르겠어요
-
미해결스프링부트 시큐리티 & JWT 강의
만약 존재하지 않는 ID가 들어올 경우는 어떻게 하는게 좋을까요?
강사님 안녕하세요.강의 늘 잘 보고 있습니다. 25강 내용에서,올바른 id일 경우 password 일치 여부에 따라 404 혹은 401 에러를 응답하는 것은 확인했습니다.헌데 id 자체가 잘못되었을 경우 서버 에러(500)가 발생하더라구요.잘못된 ID 입력에 대한 처리를 어떻게 하는게 좋을 지 궁금합니다.Service 계층(loadUserByUsername)에서 한번 검사를 한 후, 통과되었을 시 UserDetails을 return하는 식으로 구현하나요?이 경우, loadUserByUsername의 return값은 어떤 것이 권장되는지 궁금합니다.
-
미해결스프링부트 시큐리티 & JWT 강의
패스워드 검증은 어디서 이루어지는건가요?
회원가입은 BCryptPasswordEncoder를 통해 패스워드를 암호화를 했었늗데요 @PostMapping("/joinProc") public String joinPorc(User user) { String rawPassword = user.getPassword(); String encPassword = bCryptPasswordEncoder.encode(rawPassword); user.setPassword(encPassword); userRepository.save(user); return "redirect:/login"; }로그인할 떄 에는 따로 패스워드를 따로 검증하지 않고 username만 확인하더라구요@Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User userEntity = userRepository.findByUsername(username); if(userEntity != null){ return new PrincipalDetails(userEntity); } return null; } @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }어느 부분에서 자동으로 BCryptPasswordEncoder를 통해 matches하고 검증하는건가요??
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
대운, 세운에 대한 의미
/members/:memberId/fortune/:bigNum?/:smallNum? 안녕하세요, 위 api에 대해 아직 이해가 안되서 여쭤봅니다.bigNum이 대운smalNum은 세운을 뜻하는것 같은데대운 1~10, 세운 1~10을 선택하면 위 param에 넣어진다는 것은 맞을까요?/members/:memberId/fortune/1/2 이런식으로요! 그런데 대운, 세운을 선택한다는게 무슨뜻인가요? 예컨대 대운 1을 택한다는것과 세운 3을 선택한다면 뭘 선택했다는건지 이해가 안가서요!아마 제가 프론트 학습(만세력 앱 관련)을 하기전에 서버부터 해서 그런거 같은데 이 의미에 대해 설명해주시면 감사하겠습니다
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
VueJs(프로트엔드) 오류
PS C:\Users\jagit\SSYW\saju-frontend-vuejs-master> npm installnpm WARN config global --global, --local are deprecated. Use --location=global instead.npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolvenpm ERR! npm ERR! While resolving: vuetify-loader@1.9.2npm ERR! Found: vue@2.6.11npm ERR! node_modules/vuenpm ERR! vue@"2.6.11" from the root projectnpm ERR! peerOptional vue@"^2 || ^3.0.0-0" from @vue/babel-preset-app@4.5.17npm ERR! node_modules/@vue/babel-preset-appnpm ERR! @vue/babel-preset-app@"^4.5.17" from @vue/cli-plugin-babel@4.5.17npm ERR! node_modules/@vue/cli-plugin-babelnpm ERR! dev @vue/cli-plugin-babel@"~4.5.15" from the root projectnpm ERR! 3 more (vue-axios, vuetify, vuex)npm ERR! npm ERR! Could not resolve dependency:npm ERR! peer vue@"^2.7.2" from vuetify-loader@1.9.2npm ERR! node_modules/vuetify-loadernpm ERR! dev vuetify-loader@"^1.7.0" from the root projectnpm ERR! npm ERR! Conflicting peer dependency: vue@2.7.14npm ERR! node_modules/vuenpm ERR! peer vue@"^2.7.2" from vuetify-loader@1.9.2npm ERR! node_modules/vuetify-loadernpm ERR! dev vuetify-loader@"^1.7.0" from the root projectnpm ERR! npm ERR! Fix the upstream dependency conflict, or retrynpm ERR! this command with --force, or --legacy-peer-depsnpm ERR! to accept an incorrect (and potentially broken) dependency resolution.npm ERR! npm ERR! See C:\Users\jagit\AppData\Local\npm-cache\eresolve-report.txt for a full report.npm ERR! A complete log of this run can be found in:npm ERR! C:\Users\jagit\AppData\Local\npm-cache\_logs\2023-01-28T07_03_01_187Z-debug-0.logPS C:\Users\jagit\SSYW\saju-frontend-vuejs-master> npm run servenpm WARN config global --global, --local are deprecated. Use --location=global instead.> saju-frontend-vuejs@0.1.0 serve> vue-cli-service serve'vue-cli-service'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.PS C:\Users\jagit\SSYW\saju-frontend-vuejs-master> 오류납니다. 도와주세요!
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
postman 사용 중 애러
어찌해야 할지 모르겠네요. help me
-
미해결따라하며 배우는 NestJS
뒷 부분 공부하고 싶습니다!
강의 뒷 부분이 너무 궁금합니다!다른 비슷한 질문에 올라온 답변의 url은 다른 사람은 못 보게 돼 있는 것 같습니다.. 자료를 따로 받을 순 없는건가요??
-
미해결따라하며 배우는 NestJS
update를 repository로 빼서 작성했는데 오류가 나옵니다
boards.service.ts 코드입니다.import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { BoardStatus } from './board-status.enum'; import { Board } from './board.entity'; import { BoardRepository } from './board.repository'; import { CreateBoardDto } from './dto/create-board.dto'; @Injectable() export class BoardsService { constructor( @InjectRepository(Board) private boardRepository: BoardRepository, ) {} createBoard(createBoardDto: CreateBoardDto): Promise<Board> { return this.boardRepository.createBoard(createBoardDto); } async getBoardById(id: number): Promise<Board> { console.log(id, 'ididid'); return this.boardRepository.getBoardById(id); } async deleteBoard(id: number): Promise<void> { const result = await this.boardRepository.delete(id); if (result.affected == 0) { throw new NotFoundException(`Can't find Board with id ${id}`); } } async updateBoardStatus(id: number, status: BoardStatus): Promise<Board> { const board = await this.getBoardById(id); board.status = status; await this.boardRepository.save(board); return board; } } board.repository.ts 코드입니다import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { BoardStatus } from './board-status.enum'; import { Board } from './board.entity'; import { BoardRepository } from './board.repository'; import { CreateBoardDto } from './dto/create-board.dto'; @Injectable() export class BoardsService { constructor( @InjectRepository(Board) private boardRepository: BoardRepository, ) {} createBoard(createBoardDto: CreateBoardDto): Promise<Board> { return this.boardRepository.createBoard(createBoardDto); } async getBoardById(id: number): Promise<Board> { console.log(id, 'ididid'); return this.boardRepository.getBoardById(id); } async deleteBoard(id: number): Promise<void> { const result = await this.boardRepository.delete(id); if (result.affected == 0) { throw new NotFoundException(`Can't find Board with id ${id}`); } } async updateBoardStatus(id: number, status: BoardStatus): Promise<Board> { const board = await this.getBoardById(id); board.status = status; await this.boardRepository.save(board); return board; } } [Nest] 12296 - 2023. 01. 26. 오후 4:25:43 ERROR [ExceptionsHandler] this.boardRepository.getBoardById is not a functionTypeError: this.boardRepository.getBoardById is not a function at BoardsService.getBoardById (C:\Users\lgh38\Desktop\GH\nest-board-app\src\boards\boards.service.ts:22:33) at BoardsService.updateBoardStatus (C:\Users\lgh38\Desktop\GH\nest-board-app\src\boards\boards.service.ts:33:30) at BoardsController.updateBoardStatus (C:\Users\lgh38\Desktop\GH\nest-board-app\src\boards\boards.controller.ts:44:31)오류 내용은 위와 같습니다. 자세히 보면 this.boardRepository.getBoardById is not a function이라고 나오는데 제가 생각 했을 땐 처음 service의 updateBoardStatus 함수에서 getBoardById 함수로 넘겨주고 또 getBoardById 함수가 repository 안에 있는 getBoardById 함수에게 값을 넘겨서 두 번 리턴 받아서 해결 될 줄 알았는데 에러가 나오더라구요..오히려 분리를 안 시켰을 땐 오류가 안 나옵니다 무슨 이유일까요..?
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
제로초스쿨 커뮤니티 슬랙에 들어갈수없습니다....!
안녕하세요, 제로초 스쿨 커뮤니티 에 들어갈 수 없는데..... 이제 슬랙을 운영하시지 않으시는건가요 ??
-
미해결따라하며 배우는 NestJS
findOne() undefined 이유 아시는분
async validate(payload) { const { username } = payload; console.log(username); console.log(payload); const user: User = await this.userRepository.findOne(username); if (!user) { throw new UnauthorizedException('error'); } return user; } }logleejinleejinseong{ username: 'leejinleejinseong', iat: 1674638178, exp: 1674641778 }위 로그처럼 데이터는 로그에 찍히는데 왜 findOne에서 undefined 나올까요? 이유 아시는분..2시간 박치기하고있습니다..덜덜;;; 별짓 다해봐도 해결이 안되네요;;
-
미해결스프링부트 시큐리티 & JWT 강의
logout 기능 오류
강사님이 작성한 코드대로 진행을 하여 로그인 기능과 jwt발급, 검증 하는 부분까지 전부 정상작동 하는것 까지 확인했습니다.다만 postman 으로 Header에 jwt토큰 값을 넣고 post방식으로 /logout 메서드를 호출하였으나 404 에러가 뜨고 path는 logout이 아닌 login으로 응답이 내려옵니다.디폴드 로그아웃 url이 /logout 으로 알고 있어서 별도의 로그아웃 기능을 구현하지 않는 상태인데 제가 잘못 알고 있는 것이 있을까요 ???
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
[nodemon] app crashed - waiting for file changes before starting...
PS C:\Users\jagit\SSYW\saju-backend-nodejs-master> npm installnpm WARN config global --global, --local are deprecated. Use --location=global instead.up to date, audited 265 packages in 3s26 packages are looking for funding run npm fund for details8 vulnerabilities (6 moderate, 2 high)To address issues that do not require attention, run: npm audit fixTo address all issues (including breaking changes), run: npm audit fix --forceRun npm audit for details.PS C:\Users\jagit\SSYW\saju-backend-nodejs-master> npm run devnpm WARN config global --global, --local are deprecated. Use --location=global instead.> saju-backend-nodejs@1.0.0 dev> nodemon server[nodemon] 2.0.16[nodemon] to restart at any time, enter rs[nodemon] watching path(s): .[nodemon] watching extensions: js,mjs,json[nodemon] starting node server.jsC:\Users\jagit\SSYW\saju-backend-nodejs-master\node_modules\@slack\webhook\dist\IncomingWebhook.js:15 throw new Error('Incoming webhook URL is required'); ^Error: Incoming webhook URL is required at new IncomingWebhook (C:\Users\jagit\SSYW\saju-backend-nodejs-master\node_modules\@slack\webhook\dist\IncomingWebhook.js:15:19) at Object.<anonymous> (C:\Users\jagit\SSYW\saju-backend-nodejs-master\app\commons\slack.js:2:17) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Module.require (node:internal/modules/cjs/loader:1005:19) at require (node:internal/modules/cjs/helpers:102:18) at Object.<anonymous> (C:\Users\jagit\SSYW\saju-backend-nodejs-master\server.js:7:15) at Module._compile (node:internal/modules/cjs/loader:1105:14)[nodemon] app crashed - waiting for file changes before starting... 여기서 부터 진행이 않됩니다. 도와주세요^^
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
Error response from daemon: Ports are not available
PS B:\SSYW\saju-backend-nodejs-master> docker-compose up -d[+] Running 12/12[+] Running 1/2 - Network saju-backend-nodejs-master_default Created 9.3s - Container saju_nodejs_mysql Starting 42.3sError response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3309 -> 0.0.0.0:0: listen tcp 0.0.0.0:3309: bind: An attempt was made to access a socket in a way forbidden by its access permissions.PS B:\SSYW\saju-backend-nodejs-master> 죄송한데요. 포트를 사용할 수가 없습니다. 해결 방법좀 가르쳐 주세요. ~~
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
docker-compose up -d no configuration file provided: not found
PS B:\SSYW\saju-backend-nodejs-master> docker-compose up -dno configuration file provided: not found 이렇게 나옵니다. 어떻게 하면 해결할 수 있나요? 도커는 설치되어 있습니다.처음엔 되었는데(import?) , sql 워크브렌치 하다가 이상하게 되었습니다.해결 부탁합니다.
-
미해결따라하며 배우는 NestJS
회원가입 기능 구현
#7-2 회원가입 기능구현에서 강의 내용 전체 작성 후 회원가입 진행하였는데, username과 password가 컨트롤러에서 console.log(authCredentialDto)를 찍으니 빈 객체만 내뱉고 있고 db에 정상적으로 저장이 되지 않았습니다. 이리저리 코드를 수정해보니.dto 구성 단게에서 validator import 후에 정상적으로 출력이 됩니다. 강의 영상에서는 문제 없이 되던데 왜 이렇게 되는지 궁금합니다.
-
미해결따라하며 배우는 NestJS
구현 완료 후 TypeError: this.userRepository.createUser is not a function
TypeError: this.userRepository.createUser is not a function포스트맨에서 localhost:3000/auth/signup실행시 서버가 터지며ㅑㄴ서TypeError: this.userRepository.createUser is not a function이런 에러를 내보내고 있는데, 아무리봐도 코드는 모두 똑같아서 무슨 문제인지 찾아지지가 않네요ㅠ