06/13-3

Posted by:

|

On:

|

팀프로젝트

달력에서 남은것 – 날짜값을 들고오는 방법

개인의 경우 개인 데이터를 들고오면 된다

모임의 경우 해당 모임에 속한 인원들을 1차로 걸러내고 거기서 날짜값들을 하나로 합쳐야 한다 – 구상을 생각해봐야함

모임A-모임A에 속한 인원들-해당 인원들의 날짜값들을 들고와서 push로 한 배열에 넣어주기

강사님에게 물어본 결과 내가 생각한 2가지 방법이 다였다.

  1. 날짜값 변환 없이 그대로 다 들고오기
  2. 날짜값을 특정 문자열로 변환해서 겹치는 부분을 없애고 다시 재변환해서 쓰기

1번의 문제로 생각했던것이 배열이 너무 길어질까 였는데 2번의 과정은 백엔드에서 하는 작업이라고 하셨다. 프론트에서도 할 수는 있지만 과정이 적은것처럼 매우 많기도 하고 번거롭다.

  1. 해당 모임에 속하는 인원들의 배열을 어떻게 만들 것인가?
    여기가 제일 문제점인 구간이다. for 문을 이용해 배열을 만들어 볼까 했는데 그 과정은 가능은 해 보였다. 대신에 그다음이 문제였다
  2. 각자 배열을 만들었다면 그 배열을 하나로 합칠 것인가?
    set이라는 ES6에서 새로 생긴 것이 있던데 대신 쓸려면 문자열,숫자 여야 해서 각각의 배열의 인덱스 값들을 전부 바꾸어야 한다는 점이다. 여기서 생긴 문제가 배열명 뒤에 `${}` 처럼 붙여서 쓰고 싶었는데 임시로 배열을 만들어서 해보니 작동하지 않는 문제점이 생겼다.
  3. 해결했다면 안의 값들을 다시 Date객체로 불러내기
    간단하다면 간단한 부분이다. map을 이용해서 각각 인덱스에 접근해 new Date()안에 넣어주면 다시 date 객체가 된다

인원수만큼의 배열이 생기고 그 배열 안에 date 객체가 생김→그 배열들을 하나로 합침→합친 배열들의 인덱스 중 중복을 제거하기 위해 문자열로 전환→중복이 제거되었다면 다시 date객체로 변환

라는 과정이 너무 많기 때문에 차라리 빈 배열을 하나 만들고 거기에 모임에 속하는 인원 1명씩마다 약속이 있는 날짜 배열 값들을 다 넣어버리는 방식을 택했다

선택 삭제 부분

기능 : 선택한 모임이나 친구를 firebasestore에서 삭제해야한다

친구의 경우 컬렉션(friends)-문서(자신의 id)-컬렉션(friendLst)-문서(친구id)를 삭제해야한다

방법 : const deleteFriend=async()=>{await deleteDoc(doc(db,"/friends/자신id/friendList","친구id"))};

단일값은 해결되는데 다수값을 어떻게 해결할 것인가 생각해봐야함(map으로 넘겨서 하는 방법이 있을듯함)

그룹의 경우 컬렉션(groups)-문서(모임id)-필드(member)-배열(uid)- 자신의 uid에 해당하는 전체를 삭제해야한다

방법 : const deleteGroup=async()=>{await updateDoc(doc(db,"groups","해당그룹id"),{regions:arrayRemove("?")});}?-좀 더 확인해봐야 한다

일단 arrayRemove 대신 추가하는 arrayUnion을 써서

{member:arrayUnion("abc")}를 실행해본 결과 2번째에 바로 “abc”가 들어가 있다.

삭제로 arrayRemove 를 쓰는거는 확실해졌다. 다만, 해당하는 uid에 해당하는 모든것을 제거해야한다