본문 바로가기

개발 일지/개발 일지

내일배움캠프 Week 4

내일 드디어 프로젝트 발표 날

 

CRUD 는 전부 기능 구현에 성공 하였다 

 

다만 

몇몇 페이지는 SPA 로 구현하기 어려워서 따로 페이지를 만들었다 ..

프로젝트가 끝나도  이건 추후에 다시 만들어 볼 것이다 

 

 

또한 

 

수정 페이지 에서 이전에 등록되어있는 DB들을 불러오는 건 성공을 했지만 

이미지파일에서 문제가 발생했다 .. 

 

이것도 추후에 꼭 다시 보자 

 

가장 마음에 든  나의 함수는 

이미지 업로드 작업 이다. 

export const uploading = async (event) => {
 //이미지 업로드를 위한 상수 선언
  const imgFile = document.querySelector("#image").files[0];
  const storageRef = ref(storageService, "post_image/" + uuidv4());
  const uploadTask = uploadBytesResumable(storageRef, imgFile);

  document.getElementById("send").disabled = true;

  uploadTask.on(
    "state_change",
    // 변화시 동작하는 함수
    (snapshot) => {
      const progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
      console.log("Upload is " + progress + "% done");
      switch (snapshot.state) {
        case "paused":
          console.log("Upload is paused");
          break;
        case "running":
          console.log("Upload is running");
          break;
      }
    },
    //에러시 동작하는 함수
    (error) => {
      console.error("실패사유는:", error);
    },
    //성공시 동작하는 함수
    () => {
      getDownloadURL(uploadTask.snapshot.ref).then((contentImgUrl) => {
        console.log("업로드된 경로는:", contentImgUrl);
        const category = document.getElementById("category");
        const title = document.getElementById("title");
        const content = document.getElementById("content");
        const { uid, displayName, photoURL } = authService.currentUser;
        console.log(authService.currentUser);
        function addZero(i) {
          if (i < 10) {
            i = "0" + i;
          }
          return i;
        }
        const today = new Date();
        const year = today.getFullYear();
        const month = ("0" + (today.getMonth() + 1)).slice(-2);
        const day = ("0" + today.getDate()).slice(-2);
        const h = addZero(today.getHours());
        const m = addZero(today.getMinutes());
        const s = addZero(today.getSeconds());
        const dateString = year + month + day + h + m + s;

        try {
          addDoc(collection(dbService, "post"), {
            category: category.value,
            title: title.value,
            content: content.value,
            date: parseInt(dateString),
            uid: uid,
            contentImgUrl: contentImgUrl,
            nickname: displayName,
            profileImage: photoURL ? photoURL : "/assets/blankProfile.webp",
            time: parseInt(today),
          });
        //   alert("등록완료");
          Swal.fire({
            title: "등록완료",
            confirmButtonColor: "#94D493",
          });
  
          
          window.location.hash = "#";
        } catch (error) {
        //   alert(error);
          Swal.fire({
            title: "등록에 실패했습니다",
            confirmButtonColor: "#94D493",
          });
          console.log("error in addDoc:", error);
        }
      });
    }
  );
};

 

 

 

 

 

 

'개발 일지 > 개발 일지' 카테고리의 다른 글

Ajax 기초  (0) 2022.12.01
내일배움캠프 Day 23  (0) 2022.11.30
내일배움캠프 Day 20  (0) 2022.11.28
내일배움캠프 Day 19  (0) 2022.11.25
내일배움캠프 Day 18  (0) 2022.11.24