아이를 맡기고 맡는다는 핵심 로직의 구현이 어느 정도 완료되어 서브 커뮤니티을 구현하기 시작했다.
게시글과 각 게시글에 달리는 댓글을 관리하는 CRUD 를 구현하였다.
문서 필드는 위와같이 구성하였다.
comment_count 를 따로 속성으로 빼둔 이유는, 전체 글 리스트를 조회할 때 댓글 개수는 필요하지만, 댓글 데이터 자체는 필요하지 않기 때문에 댓글 갯수를 별도 필드에 저장하도록 하였다.
그런데 지금 생각해보니 댓글 개수 정보는 하위 컬렉션에 저장해두고 매번 API 호출 시 댓글 컬릭션의 문서 갯수를 세서 반환하므로 굳이 DB 필드로 존재할 필요는 없었을 것 같다.
삭제를 고려해야겠다.
댓글은 위와 같이 구성하였다.
내용과 댓글 작성 시간, 작성자 정보만 저장하였다.
기능 구현 자체는 게시판 만들기와 별 다를게 없어서 기술적으로 어렵다고 느낀 부분은 없었다.
(내가 고민을 깊게 하지 않아서 못 느낀 것일 수도 모른다)
다만 이 기능을 구현하면서 느꼈던 점은 파이썬 언어의 불편함이었다.
게시글 작성을 위한 파이어베이스 조작 코드이다.
게시글을 작성하면, 게시글 document 에 작성자 정보를 같이 저장하기 위해 user collection 을 참조해야 했다.
그런데, 파이어베이스 조작을 위한 SDK가 자동완성을 제공하지 않아서 너무 불편했다.
그렇다고 공식 문서에서는 모든 메서드 리스트를 친절하게 설명하고 있지도 않았고, 파이썬의 경우 코드 예제를 제공하지 않는 경우도 더러 있어서 매번 라이브러리 소스코드를 뜯어보면서 메서드를 사용했다.
라이브러리 소스코드를 뜯다보니 알게된 것은, 자동완성 기능이 제공되지 않는 이유가 파이썬이 자료형을 동적으로 결정하는 언어이기 때문임을 알게되었다.
파이썬 언어의 업그레이드로 지금은 자료형을 지정할 수 있게 되었지만, 타입스크립트처럼 이전 버전과의 하위호환성을 위해 Any 타입을 허용하고 있다.
그런데 이 라이브러리가 낮은 버전에서 만들어서인지 대부분의 반환 타입을 Any 로 지정하고 있어 자동완성이 제공되지 않았던 것이었다.
이에 대한 해결방법으로 변수를 선언할 때, 자료형을 이렇게 지정해서 선언해주는 것으로 강제 형변환을 시켜 자동완성을 지원하도록 할 수 있었다.
가뜩이나 종류가 다양한 Firebase Admin SDK 의 각종 클래스별 메소드를 편하게 조회할 수 있었다.
'팀 프로젝트 > [2024] GDSC 프로젝트 트랙' 카테고리의 다른 글
[GDSC 프로젝트 트랙] 5. 장고(Django) 배포 & Github Action 이용한 CI/CD 구축 (0) | 2024.02.06 |
---|---|
[GDSC 프로젝트 트랙] 4. 채팅 구현 방식 결정 & API 작성 (0) | 2024.02.01 |
[GDSC 프로젝트 트랙] 3. 로그인 API 구현 (2) | 2024.01.26 |
[GDSC 프로젝트 트랙] 2. 맡기 CRUD API 구현 & 배포 (0) | 2024.01.19 |
[GDSC 프로젝트 트랙] 1. 팀 빌딩 & 아이디어 수집 & 화면 설계 (3) | 2024.01.07 |