Profile, Recruit 기능을 팀원과 나누어서 작업했습니다.
그리고 우리에게 필요한 middleware를 구현하여 서버에 추가했습니다.
오늘은 어떻게 프로젝트에 기여했나요?
Bare Minimum
▷ route 세팅
- controller 하위 폴더 생성하기
- 한 요청당 하나의 파일로 만들기
- router 연결하기
const profileRouter = express.Router();
// 프로필 정보 조회
profileRouter.get('/profile', controller.getProfile);
// 프로필 정보 저장/수정
profileRouter.post('/profile', controller.postProfile);
export default profileRouter;
Login
▷ redirect 주소(endpoint) 수정하기
-`/loginloading`로 변경
클라이언트에서 인증 서버에서 받아오는 authorization code를 쉽게 관리하기 위해 따로 endpoint를 정해주었습니다.
Middleware
▷ authChecker 작성
서버에 요청할 때 요청한 유저가 로그인한 상태인지 확인하는 middleware를 구현하였습니다.
access token을 이용하여 유저의 아이디, 유저의 이메일을 확인한 후에 실제 요청으로 넘어갔습니다.
Profile
▷ 프로필 정보 조회 기능 구현
- `get /profile` 로직 구현
Recruit
▷ 게시글 상세 내용 조회 기능 구현
- `get /recruitBoard/:board_id` 로직 구현
- recruits 테이블의 entity 보완
일부 필드에 대한 조건을 설정하고 필요한 필드를 추가했습니다.
@Column({
length: 10000,
})
detailDesc!: string;
오늘의 프로젝트에서 힘든 점은 무엇인가요?
▷ foreign key 사용하기
TypeORM에서 `find ()`로 데이터를 검색하면 그 결과에 외래 키 필드가 포함되어 있지 않습니다. 따라서 외래 키 필드에 접근하려면 다른 방식을 사용해야 합니다.
`getRepository()`와 `relations`을 사용하면 외래 키 필드에 접근할 수 있습니다.
이때, `relations`에는 `@ManyToOne`에서 두번째 인자로 작성한 변수명을 넣어야 합니다.
import { getRepository } from 'typeorm';
let findComments = await getRepository(Recruit_comments).findAndCount({
relations: ['recruits'],
});
내일은 프로젝트에 기여하기 위해 무엇을 해야 하나요?
▷ Profile: client와 연결하기
- 프로젝트 목록 데이터도 보내주기
- projects 테이블 스키마 디자인 보완하기
- 클라이언트의 요구사항에 맞춰서 로직 보완하기
▷ Recruit: 댓글 기능 구현하기
- 게시글 댓글 등록하기
- 게시글 댓글 삭제하기
▷ 지금까지 구현한 기능을 포함하여 배포하기