저 중간에 firbaseConfig라고 적힌 부분은 모두에게 다 다르게 주어진 firebase에서 제공되는 키이므로, 각자 키를 가져와서 저 공간에 복사 붙여넣기를 하면 된다. 저 키를 어떻게 가져와야 하는지 잘 모르겠는 사람들은, 4주차 웹개발 내용을 확인하도록 하자.
script 태그에 'module'이라는 타입을 붙여주었다면, 이전에 이 태그 안에 onclick()와 같이 다른 UI와 소통하던 코드들은 작동하지 않게 될 것이다. 이 예시에서 '영화 기록하기'와 같은 코드에 <button onclick="openclose()"...> 라는 코드가 있었다면, 이 코드를 지우고 대신 버튼의 id값을 주자.
이 코드는 내 영화 카드에 들어갈 값들인데, 위에서부터 id 값만 보면 image, title, star, 그리고 comment로 이루어져 있다.
이 값들로 바꿔서 코드를 재작성하면,
이런 코드가 나온다.
$("#postingbtn").click(asyncfunction () {
letimage = $('#image').val();
lettitle = $('#title').val();
letstar = $('#star').val();
letcomment = $('#comment').val();
letdoc = {
'image':image,
'title':title,
'star':star,
'comment':comment
};
awaitaddDoc(collection(db, "movies"), doc);
alert('저장이 완료되었습니다.');
window.location.reload();
})
이 상태가 되면, 내가 카드 정보를 입력했을 때 '저장이 완료되었습니다'라는 알림과 함께, Firebase 데이터베이스에 영화 정보가 들어간 것을 확인할 수 있다.
다음으로는 데이터베이스에 저장된 데이터를 가지고 와서 페이지가 로드되기 직전에 html 코드로 치환되어 카드를 자동으로 만들어주게 할 수 있다. 역시 Firebase에서 제공한 함수인 GetDoc을 사용해서 만들어볼건데, 지난번에 사용했던 코드를 그대로 가져와서 사용해보자.
letdocs = awaitgetDocs(collection(db, "albums"));
docs.forEach((doc) => {
letrow = doc.data();
letimage = row['image'];
lettitle = row['title'];
letcontent = row['content'];
letdate = row['date'];
lettemp_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-muted">${date}</small>
</div>
</div>
</div>`;
$('#card').append(temp_html);
});
바로 이 코든데, 여기에서 내가 필요한 정보는 이 페이지에서 사용할 카드의 html 코드 부분이다.