매일 한걸음씩 성장하기

오늘은 어떻게 프로젝트에 기여했나요?

Recruit

▷ 게시글 리스트에서 검색하는 로직 구현

- `post /filterRecruitList/:order/:sort`: stack으로 게시글 검색

- req.body: `searchStacksList` - 검색할 때 포함할 stack들의 집합(베열)

- req.params:

`order`- 검색 결과 갯수(infinite scroll을 위해 검색결과를 잘라서 보내줌)

`sort`- 검색 순서(최신순, 오래된순) (이후 #23 에도 해당 parameter 추가)

- res.data에 `isEnd`값 추가 - 게시글 데이터가 더 존재하는지에 대한 여부(true, false)

 

Test & Fix

▷ middleware-authChecker 위치 변경

▷ 지금까지 구현한 로직에서 발생한 여러가지 에러 수정

- 필드명 고치기(업데이트된 필드명을 적용시키지 못한 부분 수정) #27

- 로직을 작성하는 과정에서 남아있는 주석, 예전 코드 정리

 

Database

▷ project, workspace에서 사용할 테이블들의 entity 생성

- tasks 테이블: 칸반보드에 들어가는 일정 관리 카드(task)를 관리하는 테이블

- checklists 테이블: task에 들어가는 체크리스트 데이터를 관리하는 테이블

- task_comments 테이블: task에서 작성할 수 있는 댓글들을 관리하는 테이블

 

Project

▷ project 기능 관련 router, controller 생성

- route: projectRouter

- controllers: showProjectList, createProject, editProject, inviteMembers

 

오늘의 프로젝트에서 힘든 점은 무엇인가요?

▷ 원하는 데이터 검색하기

검색 기능을 구현할 때 find() 함수에서 where을 사용하여 원하는 stack만 바로 filter될 수 있도록 작성하고 싶었는데 실제로 테스트한 결과, where 부분이 적용되지 않거나 자꾸 에러가 발생했습니다.

const allBoards = await getRepository(Recruits).find({
    relations: ['writer', 'stacks'],
    where: {
        stacks: {
            name: searchStacksList,
        },
    },
    order: {
        createdAt: sort,
    },
});

방법을 찾기위해 검색하며 여러가지 글을 읽어본 결과, 처음에 entity를 작성할 때 뭔가 어설프게 만들었고 그 부분에서 join + where이 적용되지 않는다는 결론이 나왔습니다. 이를 올바르게 동작시키려면 entity부터 다시 작성해야할 것 같다는 생각이 들었습니다.

아직 앞으로 구현해야 할 기능들이 많기 때문에 우선 전체 게시글 데이터를 불러온 다음 하나씩 원하는 stack을 모두 가지고 있는지에 대해 검사하는 방법으로 검색 기능을 작성하였습니다. 다행히 검색 기능이 원하는대로 작동되긴 하는데 지금 코드보다 더 효율적인 방법이 있을 것 같다는 생각이 들었습니다. 나중에라도 계획한 기능들을 모두 구현 완료한 후에 시간이 남으면 천천히 여기 부분을 분석+수정&보완하는 방향으로 가고싶습니다.

let filterResult = [];
for (let idx = 0; idx < allBoards.length; idx++) {
    let requireStack = allBoards[idx].stacks.map(el => el.name);
    let isRight = true;
    for (let chk = 0; chk < searchStacksList.length; chk++) {
        // stack이 해당 게시글에 포함되어있는지 확인
        if (!requireStack.includes(searchStacksList[chk])) {
            isRight = false;
            break;
        }
    }
    if (isRight) {
        const obj = { ...allBoards[idx], requireStack };
        filterResult.push(obj);
    }
}

 

 

내일은 프로젝트에 기여하기 위해 무엇을 해야 하나요?

▷ profile, recruit 기능 테스트 + 에러 수정하기

▷ 오늘 작성한 entity를 토대로 스키마 디자인 보완하기

▷ socket.io 공부하기

▷ project 기능 구현하기

- 프로젝트 리스트 조회

- 프로젝트 생성

- 프로젝트 수정

- 프로젝트 팀원 초대 (nodemailer 사용)

 

'Code States > Project Record' 카테고리의 다른 글

[기록] Final Project_2021.05.19  (0) 2021.05.19
[기록] Final Project_2021.05.18  (0) 2021.05.18
[기록] Final Project_2021.05.16  (0) 2021.05.16
[기록] Final Project_2021.05.14  (0) 2021.05.14
[기록] Final Project_2021.05.13  (0) 2021.05.13

공유하기

facebook twitter kakaoTalk kakaostory naver band