팀프로젝트
달력에서 남은것 – 날짜값을 들고오는 방법
개인의 경우 개인 데이터를 들고오면 된다
모임의 경우 해당 모임에 속한 인원들을 1차로 걸러내고 거기서 날짜값들을 하나로 합쳐야 한다 – 구상을 생각해봐야함
모임A-모임A에 속한 인원들-해당 인원들의 날짜값들을 들고와서 push로 한 배열에 넣어주기
강사님에게 물어본 결과 내가 생각한 2가지 방법이 다였다.
- 날짜값 변환 없이 그대로 다 들고오기
- 날짜값을 특정 문자열로 변환해서 겹치는 부분을 없애고 다시 재변환해서 쓰기
1번의 문제로 생각했던것이 배열이 너무 길어질까 였는데 2번의 과정은 백엔드에서 하는 작업이라고 하셨다. 프론트에서도 할 수는 있지만 과정이 적은것처럼 매우 많기도 하고 번거롭다.
- 해당 모임에 속하는 인원들의 배열을 어떻게 만들 것인가?
여기가 제일 문제점인 구간이다. for 문을 이용해 배열을 만들어 볼까 했는데 그 과정은 가능은 해 보였다. 대신에 그다음이 문제였다 - 각자 배열을 만들었다면 그 배열을 하나로 합칠 것인가?
set이라는 ES6에서 새로 생긴 것이 있던데 대신 쓸려면 문자열,숫자 여야 해서 각각의 배열의 인덱스 값들을 전부 바꾸어야 한다는 점이다. 여기서 생긴 문제가 배열명 뒤에 `${}` 처럼 붙여서 쓰고 싶었는데 임시로 배열을 만들어서 해보니 작동하지 않는 문제점이 생겼다. - 해결했다면 안의 값들을 다시 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에 해당하는 모든것을 제거해야한다