↓ 달력 페이지 ↓
↓ 날짜 페이지 ↓
↓ 피드 페이지 ↓
- firebase.google.com 가입
- 시작하기를 통해 새 프로젝트 생성.
- 구글 애널리틱스 지금은 사용하지 않지만, 나중에는 사용해서 이용해보고싶다.
- 빌드 탭의 Firestore Database에서 데이터 베이스 생성 (테스트 모드, 위치는 northeast3 서울)
- 웹 앱 등록 후 CLI에서 yarn add firebase 하여 모듈 설치.
- 안내받은 명령어를 _app.tsx 파일에 입력. (const firebaseapp ~ )
- app과 db는 다른 파일에서도 사용할 수 있게 export.
- firebaseConfig는 별도의 파일로 분리하여 .gitignore로 제외시키기.
addDoc - Diary 컬렉션에 데이터를 삽입 (무드, 내용, 날짜,생성일을 삽입하였다.)
에러가 없으면 글 작성 후 글을 볼 수 있게 상위 페이지로 이동하게 된다. // router.push()const onSubmit = async () => { try { await addDoc(collection(db, "Diary"), { mood, contents, date: thisDay.format("YYYY-MM-DD"), createdAt: dayjs().format() }); router.push(`/${router.query.year}/${router.query.date}`) } catch (e) { } }
getDoc - useEffect를 통해 컬렉션에 저장된 내용을 펫칭.
- query를 통해 콜렉션을 최신순으로 정렬하였다.
- 결과들이 담긴 doc은 DocumentData라는 타입을 가지고있다. (파이어베이스에 포함됨.)
- doc은 data()함수를 통해서 우리가 이용 가능한 데이터로 변환된다.
- 스프레드 연산자를 통해 data 내에 id를 추가하였다.
const petchDiary = async () => { const dataArray: Data[] = []; const result = await getDocs( query(collection(db, "Diary"), orderBy("createdAt", "desc"))); result.docs.map((doc: DocumentData) => { dataArray.push({ ...doc.data(), id: doc.id }) }); setDiaryData(dataArray) }
현재까지 앱의 최소한의 골자는 만들었다는 느낌이 든다. 아직 스타일링과 기능구현을 진행해야할 부분도 많이 남아있고, 기획을 확정하지 않은 부분도 있어서, 내가 인지하지 못한 보안적 혹은 속도 관련 효율성을 포함한 개선점이 있으리라 짐작은 하고있다. 또한 로그인 관련 기능 고도화를 통해 어디까지 정교해져야할지도 궁금하다. 이제 점점 다른 어플리케이션을 벤치마킹에 속도를 붙여 내가 구현해보고 싶은 부분을 적용하여 개선점을 찾아야 할 때라고 느낀다.
블로그에 글을 남기고 있자니, 다른 기술 블로그들처럼 내가 적용하는 기술에 대해서 상세하게 안내해주는 글을 작성해야하나 고민해보았는데, 그렇게 되면 내가 내 블로그를 공식문서를 번역하고 복붙하는 것과 다를 바가 없어서 (게다가 공식 문서는 계속 바뀐다), 이 때 무엇에 대해 고민했고 어떤 기술을 기억하려고 했는지 정도로만 남기면 좋다고 생각했다. 더욱 나 스스로가 보고싶어하는 블로그로 만들어가자.
기능구현
스타일
리팩토링