안녕하세요. 이렇게 질 좋은 강의를 무료로 열어주신 것에 먼저 감사드립니다.
제가 아직 잘 못따라가서인지 모르겠지만
현재 controller, service, repository 세부분을 나누어서 역할을 구분짓고 있습니다
controller에선 엔드포인트 설정해주고
service에선 목적에 맞게 값을 리턴해서 controller에 올려주고
repository에선 DB와 교환이 발생하는 부분은 여기서 관리하고 있습니다
영상에서는 service에서 토큰을 생성후에 객체안에 담아서 accessToken을 넣어주고 있습니다
하지만 저는 repository에서 토큰을 생성후에 토큰을 담아주고 싶은데
Cannot read properties of undefined (reading 'sign')
오류가 나옵니다
구글링을 해보았지만 모듈에 있는 import부분을 건드리라는 말밖에 없는것 같아 질문을 드립니다
현재 제가 작성한 코드는
영상과 전부 같게 작성했고 단지 jwtService:JwtService 선언한 부분만 추가해 주었습니다
왜 sign부분을 읽지 못하는걸까요..? 너무 궁금합니다
* 영상대로 진행하면 제대로 토큰값을 반환합니다! *
import { ConflictException, InternalServerErrorException, NotFoundException, UnauthorizedException } from "@nestjs/common";
import { EntityRepository, Repository } from "typeorm";
import { CreateUserDto, UserLoginDto } from "./dto/user.dto";
import { UserStatus } from "./user-status-validation";
import { User } from "./user.entity";
import * as bcrypt from 'bcryptjs'
import { JwtService } from "@nestjs/jwt";
@EntityRepository(User)
export class UserRepository extends Repository<User> {
private jwtService: JwtService;
async signIn(userLoginDto:UserLoginDto): Promise<{accessToken:string}>{
const { userid, password } = userLoginDto
const user = await this.findOne({ userid })
if(user && (await bcrypt.compare(password, user.password ))){
const payload={userid}
const accessToken= await this.jwtService.sign(payload)
return {accessToken:accessToken}
} else {
throw new UnauthorizedException('login failed')
}
}
}