다음 내용은 내일배움캠프 활동 중 배운 내용을 정리한 글입니다.
<div class="card">
<img src="./imgs/김정찬_아바타.png" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">팀장 김정찬</h5>
<br>
<p class="">MBTI : ISFJ <br> 소개 : 나는야 개발자!</p>
<button id="modal0_about" class="about" data-bs-toggle="modal" data-bs-target="#exampleModal1">더 보기</button>
<!-- 더 보기 클릭 시 이 모달이 누구꺼인지 전달하기 위한 input 태그 -->
<input type="hidden" value="김정찬">
</div>
</div>
// 더 보기 버튼 클릭 시 동작 (댓글 출력을 위해 사용)
$('.about').click(async function() {
member = $(this).next("input").val();
console.log(member);
// 댓글 리스트를 출력하기 전에 비워두기 위한 함수
$('#comment_list').empty();
let docs = await getDocs(query(collection(db, "9to9_Team_Intro"), orderBy("date")));
docs.forEach((doc) => {
let row = doc.data();
// 현재 모달의 주인과 row의 데이터가 같고 isDelete가 false일 때 댓글 출력
if (row['member'] == member && row['isDelete'] == false) {
let commenter = row['commenter'];
let content = row['content'];
let date = row['date'].toDate();
// 날짜, 시간 포맷 변경하기
let year = date.getFullYear();
let month = ('0' + (date.getMonth() + 1)).slice(-2)
let days = ('0' + date.getDate()).slice(-2)
let hours = ('0' + date.getHours()).slice(-2)
let minutes = ('0' + date.getMinutes()).slice(-2)
let seconds = ('0' + date.getSeconds()).slice(-2)
let day = year + '-' + month + '-' + days + " " + hours + ":" + minutes + ":" + seconds
let html_temp = `
<div class="comment">
<div class="comment_left">
<div class="commenter_info">
<img class="comment_img" src="./imgs/comment_img.png">
<div class="commenter_and_time">
<p class="commenter">${commenter}</p>
<p class="comment_time">${day}</p>
</div>
</div>
<div class="comment_content">
<p>${content}</p>
</div>
</div>
<div class="comment_right">
<!-- 댓글들을 구분하기 위해서 파이이베이스 각 필드의 id 값을 value에 넣어줌 -->
<button value=${doc.id} type="button" class="btn btn-outline-danger comment_delete_btn">삭제</button>
</div>
</div>
<hr class="border border-dark border-2" style="width: 648px;margin-left: -10px;">`
$('#comment_list').append(html_temp);
}
});
})
// 댓글 등록하는 버튼 클릭 시 동작
$("#comment_upload_btn").click(async function () {
let commenter = $('#floatingInputName').val();
let content = $('#floatingTextarea2Content').val();
let date = new Date();
let isDelete = false;
let doc = {
'member': member, // 현재 모달창의 주인
'commenter': commenter, // 댓글 작성자
'content': content, // 댓글 내용
'date': date, // 댓글 작성 날짜(시간)
'isDelete': isDelete, // 삭제된 댓글 유무
};
await addDoc(collection(db, "9to9_Team_Intro"), doc);
alert('등록완료!');
window.location.reload();
});
$(this)
를 통해서 현재 누른 버튼이 무엇인지 판별이 가능했음...
// 현재 모달창이 누구꺼인지 저장하기 위한 변수
let member = "";
// 더 보기 버튼 클릭 시 동작 (댓글 출력을 위해 사용)
$('.about').click(async function() {
member = $(this).next("input").val();
...
});
...
...
let date = row['date'].toDate();
// 날짜, 시간 포맷 변경하기
let year = date.getFullYear();
let month = ('0' + (date.getMonth() + 1)).slice(-2)
let days = ('0' + date.getDate()).slice(-2)
let hours = ('0' + date.getHours()).slice(-2)
let minutes = ('0' + date.getMinutes()).slice(-2)
let seconds = ('0' + date.getSeconds()).slice(-2)
let day = year + '-' + month + '-' + days + " " + hours + ":" + minutes + ":" + seconds
// 2024-04-17 14:52:05 와 같은 형태로 출력함
...
//예를 들어 알파벳순으로 처음 3개 도시를 쿼리하는 방법은 다음과 같습니다.
import { query, orderBy, limit } from "firebase/firestore";
const q = query(citiesRef, orderBy("name"), limit(3));
...
let docs = await getDocs(query(collection(db, "9to9_Team_Intro"), orderBy("date")));
...