- constructor() : 클래스의 객체를 생성하고 초기화 - private : 클래스 내부에서만 접근 가능한 멤버를 선언하는 접근 지정자 - @Post : HTTP POST 요청을 처리하는 엔드포인트를 정의 - @Body() : HTTP 요청 본문의 데이터를 가져옴 - this : 클래스 내부에서 현재 인스턴스를 참조하는데 사용됨. 클래스의 속성이나 메서드에 접근할때 사용
auth.service.ts
2.Service : 회원가입 로직을 처리하며, 데이터베이스 연동을 수행함 - @Injectable() : 클래스를 프로바이더로 표시하고 의존성 주입을 가능하게 함. - @InjectRepository() : 특정 엔터티의 레포지토리를 인스턴스화하고 해당 레포지토리를 주입하는데 사용 - bcrypt 라이브러리 : 비밀번호 해싱을 위한 라이브러리 , 패스워드 보안 강화 - typeorm :서버에서 사용되는 orm 라이브러리, 데이터베이스 작업을 단순화하고, 매핑을 관리함 - Repository : Typeorm의 핵심 개념, 특정 엔터티와 관련된 작업을 수행하는데 사용되는 객체 - userRepository: Repository<User>의 뜻 : User 엔터티와 관련된 작업을 수행할 수 있는 레포지토리의 인스턴스를 선언 - : Promise<User> 뜻 : User 객체를 담은 프로미스를 반환, 비동기 작업이므로 결과를 기다린 후 반환 - await bcrypt.genSalt() 뜻 : 비밀번호 해싱에 사용될 salt를 비동기적으로 생성 - await bcrypt.hash() 뜻 : 주어진 비밀번호를 해시화
auth.module.ts
3.Module : 인증과 관련된 부분을 정의, 서비스와 컨트롤러를 정의함.
- TypeOrmModule : TypeORM을 NestJS와 통합하는데 사용되는 모듈, 데이터베이스 연결과 언터티 관리를 위해 사용됨. - forFeature() : 특정 모듈 내에서 특정 엔터티를 사용할 수 있게 등록함. 특정 레포지토리와 함께 사용되어 해당 모듈의 컨트롤러와 프로바이더에 주입될 수 있게 함.
슬라이싱을 위한 시작 인덱스 식별: 문자열에서 마지막 n 문자가 필요하므로 슬라이스 작업의 시작 인덱스는 문자열에서 n을 뺀 길이입니다.
문자열 슬라이스: 문자열에서 slice() 메서드를 사용하여 계산된 시작 인덱스부터 시작하여 문자열 끝까지 하위 문자열을 가져올 수 있습니다.
function solution(my_string, n) {
// Identify the start index for slicing
let startIndex = my_string.length - n;
// Slicing the string from start index till the end
let result = my_string.slice(startIndex);
// return the result
return result;
}
1행: my_string과 n을 매개변수로 받는 함수 solution을 정의합니다.
3행: my_string의 길이에서 n을 빼 슬라이싱 시작 인덱스를 계산합니다.
6행: 계산된 시작 인덱스에서 끝까지 my_string을 슬라이스하여 result 변수에 할당합니다.
9행: result를 반환합니다.
사용된 주요 JavaScript 메서드/함수:
length: String 개체의 이 속성은 문자열의 길이를 UTF-16 코드 단위로 나타냅니다.
slice(): 이 메서드는 문자열의 일부를 추출하여 원래 문자열을 수정하지 않고 새 문자열로 반환합니다
마지막 두 요소 확인: 먼저 목록의 마지막 두 요소를 검색합니다. 이는 Javascript의 네거티브 인덱싱을 사용하여 쉽게 얻을 수 있습니다.
조건 연산: 그런 다음 이 두 요소를 비교합니다. 마지막 요소가 두 번째에서 마지막 요소보다 크면 마지막 요소에서 두 번째에서 마지막 요소를 빼고 결과를 목록에 추가합니다. 그렇지 않은 경우 마지막 요소를 두 배로 늘리고 해당 결과를 목록에 추가합니다.
목록 업데이트: 배열 끝에 새 항목을 추가하는 push 메서드를 사용하여 목록을 업데이트합니다.
function solution(num_list) {
// retrieve the last two elements of the list
let last = num_list[num_list.length - 1];
let second_last = num_list[num_list.length - 2];
// perform conditional operation and update the list
if (last > second_last) {
num_list.push(last - second_last);
} else {
num_list.push(last * 2);
}
// return the updated list
return num_list;
}
1행: num_list를 매개변수로 받는 solution 함수를 정의합니다.
Line 3 & 4: num_list에서 마지막 및 두 번째 마지막 요소를 추출합니다.
7행 - 11행: 마지막 요소와 두 번째 마지막 요소를 비교하고 비교를 기반으로 마지막 요소에서 두 번째 마지막 요소를 빼거나 마지막 요소를 두 배로 늘립니다. 결과는 num_list로 푸시됩니다.
14행: 업데이트된 num_list를 반환합니다.
사용된 주요 JavaScript 메서드/함수:
length: 배열의 이 속성은 해당 배열의 요소 수를 반환합니다.
push: 이 메서드는 배열 끝에 하나 이상의 요소를 추가하고 배열의 새 길이를 반환합니다.
요점 : 주어진 숫자의 패리티(홀수 또는 짝수 특성)를 기반으로 배열의 각 요소에 변환을 적용
function solution(arr, k) {
// Check if k is odd or even
if (k % 2 === 0) {
// If k is even, add k to each element
return arr.map(element => element + k);
} else {
// If k is odd, multiply each element by k
return arr.map(element => element * k);
}
}
k먼저 짝수인지 홀수인지 판단해야 합니다 . 모듈로 연산자( %)를 사용하여 이를 수행할 수 있습니다. 0 과 k % 2같으면 k짝수입니다. 그렇지 않으면 k이상합니다.
짝수 이면 의 각 요소에 k추가합니다 . 배열의 각 요소에 함수를 적용하고 결과와 함께 새 배열을 반환하는 함수를 사용합니다 . 이 경우 함수는 각 요소에 추가합니다.k arr map k
홀수 이면 의 k각 요소에 를 곱합니다 . 다시, 우리는 기능을 사용합니다. 이번에는 함수가 각 요소에 를 곱합니다 .