커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
firebase에서 제대로 데이터를 받아왔는지 모르겠어요.
[왕초보] 웹개발 종합반 v0
4주차
북마크
송*익
댓글
3
추천
0
조회수
13
조회수
13
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


강사님 처럼 콘솔창에 데이터가 깔끔하게 나오는게 아니라 다음 켑쳐본 처럼 나옵니다.





스파르타 즉문즉답




콘솔 부분만 보기 위해 불필요한 다른 요소들은 주석 처리 하였습니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>나만의 추억앨범</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
      crossorigin="anonymous"
    />


    <style>
      @import url("https://fonts.googleapis.com/css2?family=Gamja+Flower&display=swap");
      * {
        font-family: "Gamja Flower", sans-serif;
      }


      .title {
        height: 300px;
        color: white;


        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;


        background-image: url("https://images.unsplash.com/photo-1511992243105-2992b3fd0410?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80");
        background-position: center;
        background-size: cover;
      }
      .title > button {
        width: 150px;
        height: 50px;
        background-color: transparent;
        color: white;
        border: 1px solid white;
        border-radius: 2px;
        margin-top: 20px;
      }
      .mycard {
        margin: 0px auto 10px auto;
        width: 1200px;
      }
      .my_bnt > button {
        margin-right: 10px;
      }


      .my_bnt {
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: center;
      }
      .my_posting {
        width: 400px;
        margin: 0px auto 10px auto;
        padding: 20px;
        box-shadow: 0px 0px 3px 0px blue;
        border-radius: 3px;
      }
    </style>


    <script type="module">
      // Firebase SDK 라이브러리 가져오기
      import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-app.js";
      import { getFirestore } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
      import {
        collection,
        addDoc,
      } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
      import { getDocs } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";


      /* // For Firebase JS SDK v7.20.0 and later, measurementId is optional*/
      const firebaseConfig = {
        apiKey: "AIzaSyCkT0jz19Y6Sm0rlT-wB-LU6jt1OsByCNg",
        authDomain: "sparta-785a7.firebaseapp.com",
        projectId: "sparta-785a7",
        storageBucket: "sparta-785a7.appspot.com",
        messagingSenderId: "1008347830523",
        appId: "1:1008347830523:web:ed54b47bddfa554c2bf85e",
        measurementId: "G-67S7SB1RF5",
      };


      // Firebase 인스턴스 초기화
      const app = initializeApp(firebaseConfig);
      const db = getFirestore(app);


      $("#postingbtn").click(async function () {
        let image = $("#image").val();
        let title = $("#title").val();
        let content = $("#content").val();
        let date = $("#date").val();


        let doc = { image: image, title: title, content: content, date: date };
        await addDoc(collection(db, "albums"), doc);
        alert("저장 완료!");
        window.location.reload();
      });


      $("#savebtn").click(async function () {
        $("#postingbox").toggle();
      });


      let url = "http://spartacodingclub.shop/sparta_api/seoulair";
      fetch(url)
        .then((res) => res.json())
        .then((data) => {
          let mise = data["RealtimeCityAir"]["row"][0]["IDEX_NM"];
          $("#msg").text(mise);
        });


      let docs = await getDocs(collection(db, "albums"));
      docs.forEach((doc) => {
        let row = doc.data();
      /*  let image = row('image');
        let title = row('title');
        let content = row('content');
        let date = row('date');
      */  console.log(row);


      });
     /*   let temp_html = `        <div class="col">
                            <div class="card h-100">
                              <img src="${image}"
                                class="card-img-top"
                                alt="..."
                              />
                              <div class="card-body">
                                <h5 class="card-title">${title}</h5>
                                <p class="card-text">${content}</p>
                              </div>
                              <div class="card-footer">
                                <small class="text-body-secondary">${date}</small>
                              </div>
                            </div>
                          </div>`;
        $("#card").append(temp_html);


*/
    </script>
  </head>
  <body>
    <div class="title">
      <h1>나만의 추억 앨범</h1>
      <p>현재 서울의 미세먼지 : <span id="msg">나쁨</span></p>
      <button id="savebtn">추억 저장하기</button>
    </div>


    <div class="my_posting" id="postingbox">
      <div class="form-floating mb-3">
        <input
          type="email"
          class="form-control"
          id="image"
          placeholder="앨범 제목"
        />
        <label for="floatingInput">앨범 이미지</label>
      </div>


      <div class="form-floating mb-3">
        <input
          type="email"
          class="form-control"
          id="title"
          placeholder="앨범 제목"
        />
        <label for="floatingInput">앨범 제목</label>
      </div>


      <div class="form-floating mb-3">
        <input
          type="email"
          class="form-control"
          id="content"
          placeholder="앨범 제목"
        />


        <label for="floatingInput">앨범 내용</label>
      </div>


      <div class="form-floating mb-3">
        <input
          type="email"
          class="form-control"
          id="date"
          placeholder="앨범 제목"
        />


        <label for="floatingInput">앨범 날짜</label>
      </div>


      <div class="my_bnt">
        <button id="postingbtn" class="btn btn-primary" onclick="makecard()">
          기록하기
        </button>
        <button type="button" class="btn btn-outline-dark">닫기</button>
      </div>
    </div>
    <div class="cardlist">
      <div class="mycard">
        <div id="card" class="row row-cols-1 row-cols-md-4 g-4">
          <div class="col">
            <div class="card h-100">
              <img
                src="https://images.unsplash.com/photo-1446768500601-ac47e5ec3719?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1446&q=80"
                class="card-img-top"
                alt="..."
              />
              <div class="card-body">
                <h5 class="card-title">제목</h5>
                <p class="card-text">내용</p>
              </div>
              <div class="card-footer">
                <small class="text-body-secondary">날짜</small>
              </div>
            </div>
          </div>


          <div class="col">
            <div class="card h-100">
              <img
                src="https://images.unsplash.com/photo-1446768500601-ac47e5ec3719?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1446&q=80"
                class="card-img-top"
                alt="..."
              />
              <div class="card-body">
                <h5 class="card-title">제목</h5>
                <p class="card-text">내용</p>
              </div>
              <div class="card-footer">
                <small class="text-body-secondary">날짜</small>
              </div>
            </div>
          </div>


          <div class="col">
            <div class="card h-100">
              <img
                src="https://images.unsplash.com/photo-1446768500601-ac47e5ec3719?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1446&q=80"
                class="card-img-top"
                alt="..."
              />
              <div class="card-body">
                <h5 class="card-title">제목</h5>
                <p class="card-text">내용</p>
              </div>
              <div class="card-footer">
                <small class="text-body-secondary">날짜</small>
              </div>
            </div>
          </div>


          <div class="col">
            <div class="card h-100">
              <img
                src="https://images.unsplash.com/photo-1446768500601-ac47e5ec3719?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1446&q=80"
                class="card-img-top"
                alt="..."
              />
              <div class="card-body">
                <h5 class="card-title">제목</h5>
                <p class="card-text">내용</p>
              </div>
              <div class="card-footer">
                <small class="text-body-secondary">날짜</small>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴