u_ju
우주의 우당탕탕개발일지
u_ju
전체 방문자
오늘
어제
  • 분류 전체보기 (118)
    • 팀 프로젝트 (2)
    • 내배캠 WIL & TIL (91)
    • JS (0)
    • React (1)
    • CS (23)
    • Next (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 회의감#현타#나름뿌듯#고민거리#코딩#IT#CSS#JS
  • 일요일 오늘은 내가 바로 함수만들기 요리사 !
  • 배열#함수
  • 코딩#바보#오류투성이#팀프로젝트
  • Component를 처음 선언하는 것을 Mount 라고 한다던데...?#props #state

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
u_ju

우주의 우당탕탕개발일지

내배캠 WIL & TIL

TIL) 스파르타 개발일지 23-02-23

2023. 2. 23. 21:15

서비스 페이지에서 금융상품을 선택하여, 비교하기 팝업으로 넘겨주는 과정에서 생긴 이슈다.

 

분명 팀원분이 ID값만 필요하면 된다고 하셨던 것 같은데... 초기에는 Data()를 객체화 해서 넘겼다가. 

 

단순히 ID 값만 필요한것이면, 굳이 전체데이터를 통으로 넘길 필요가 있나 싶어서

 

해당 코드를 수정하여, ID값만 배열 저장되도록 구현했는데. 오늘 다시 말씀하시길 ID값이 객체로 넘어와야한다. 라고하셨다..

 

"데이터를 팝업에선 읽지않도록 하기로 하지않았냐" 라는 것이다.

 

firebase 특성상 지속적으로 데이터를 통신하면 무료 할당량이 초과나기 때문에 이 얘기를 얘기했던걸로 기억했고, 

 

인자로 받아서 해당 상품의 정보를 가져오는건... 사실 상관이 없는데 말이다.

 

하지만 기존 작업해두었던 코드의 기록이 남아있었고, 크게 언쟁할 필요도 없는 요소기에 재작업 후 드리기로 했다.

 

ㅠㅠ 이런문제는 소통의 부재로 생기는걸까 ??

 

 

먼저 해당 함수를 수정하고, 기존 배열에서 4번요소에 Data()를 객체형식으로 추가되게 수정하였다.

 

//* 금융상품 타입에 따른 선택된 상품의 고유 값 저장함수.
  const handleSelectProducts = async (productId) => {
    if (productTypes !== 2) {
      try {
        const docRef = doc(db, "DEPOSIT_BASE_LIST", productId);
        const docSnap = await getDoc(docRef);

        if (docSnap.exists()) {
          const baseListData = {
            id: docSnap.id,
            ...docSnap.data(),
          };
          //baseListData에서 상품코드만 구조분해할당
          const { fin_prdt_cd } = baseListData;

          const querySnapshot = await getDocs(
            collection(db, "DEPOSIT_OPTION_LIST"),
            where("fin_prdt_cd", "==", fin_prdt_cd)
          );
          //위에 상품코드가 똑같은거를 option에서 찾아서 map
          const options = querySnapshot.docs.map((doc) => doc.data());
          //selectedProductIds : 선택한 상품 들어가는 배열
          const selectedProductIdsCopy = [...selectedProductIds];

          for (let i = 0; i < selectedProductIdsCopy.length; i += 6) {
            if (selectedProductIdsCopy[i] === "") {
              //targetDoc: 선택한 상품코드가 일치한 option친구들의 속성을 가져온다.
              const targetDoc = options.find(
                (option) => option.fin_prdt_cd === fin_prdt_cd
              );

              if (targetDoc) {
                selectedProductIdsCopy[i] = docSnap.id;
                selectedProductIdsCopy[i + 1] = targetDoc.intr_rate;
                selectedProductIdsCopy[i + 2] = targetDoc.intr_rate2;
                selectedProductIdsCopy[i + 3] = targetDoc.intr_rate_type;
                selectedProductIdsCopy[i + 4] = docSnap.data();
                selectedProductIdsCopy[i + 5] = productTypes;
                setSelectedProductIds(selectedProductIdsCopy);
                setIntrRate(targetDoc.intr_rate);
                setIntrRate2(targetDoc.intr_rate2);
                setIntrRateType(targetDoc.intr_rate_type);
                console.log(selectedProductIdsCopy);
                break;
              } else {
                console.log(
                  "DEPOSIT_OPTION_LIST 컬렉션에서 해당 상품을 찾을 수 없습니다."
                );
              }
            }
          }
        } else {
          console.log(
            "DEPOSIT_BASE_LIST 컬렉션에서 해당 상품을 찾을 수 없습니다."
          );
        }
      } catch (error) {
        console.log(error);
      }

'내배캠 WIL & TIL' 카테고리의 다른 글

TIL) 스파르타 개발일지 23-03-07  (0) 2023.03.07
TIL) 스파르타 개발일지 23-03-06  (0) 2023.03.06
TIL) 스파르타 개발일지 23-02-22  (0) 2023.02.22
TIL) 스파르타 개발일지 23-02-21  (0) 2023.02.22
TIL) 스파르타 개발일지 23-02-20  (0) 2023.02.20
    '내배캠 WIL & TIL' 카테고리의 다른 글
    • TIL) 스파르타 개발일지 23-03-07
    • TIL) 스파르타 개발일지 23-03-06
    • TIL) 스파르타 개발일지 23-02-22
    • TIL) 스파르타 개발일지 23-02-21
    u_ju
    u_ju

    티스토리툴바