2022-08-08~10 클론 코딩 개발일지

2022. 8. 11. 16:29클론 코딩 일지

끝이 얼마 안남았다.

일지를 더 빨리 썼어야했는데 겪은 과정은 따로 블로그에 정리해야겠다.

3일동안 포폴이랑 코드 수정하는 시간을 가졌다.

 

수정

1. 기존의 스토리 데이터를 Firestore에 저장하는 방식과 불러오는 방식을 수정하였다.

2. 피드를 저장하고 불러오는 방식도 수정하였다.

3. 포스트를 저장하는 방식도 수정하였다.

 

=> 포스트 올리는 업로드방식을 storage에 업로드하고 에러시 결과를 알리는 방식에서 에러처리와 결과로 storage에 이미지가 저장된 주소를 가져와 savepost 할 때 firestore PostList 에 postImg 필드값 주소로 넣어서 저장하게 수정하였다.

=> firestore에 기존에는 document에 collection을 또 만들어 저장했던걸 하나의 document에 필드값을 매핑으로 바꾸어 위의 3개 모두 수정하였다.

=> 불러오는 방식도 firestore를 변경하면서 mapping된 field 값을 불러와야하느라 애를 먹었다. documentSnapshot 의 결과가 key , value 로 받아올때 value 값을 바로 toObject 를 사용하여 Post model로 받고싶었는데 가능하지 않았다. 그래서 value 값을 as Map<*,*> 으로 받아 postId, postImg , userId 등이 맵의 value 로 들어있는걸 post 로 하나씩 넣어 List 안에 넣어 결과로 보냈다. 더 좋은 방식은 없는지 고민이 필요해보인다. 아니면 firestore postList document 에 현재 key 에 따라 한개씩 매핑 필드로 저장되어있는걸 array Union 저장으로 변경하여 어레이 안에 있는 요소를 받아 변경해야하나 싶다. toObject가 안되는 시점에선 둘 다 비슷해보인다.

=> 또한 Firestore 에 필드값으로 이름을 지정할때 알아둬야하는 규칙도 알게되었다. 공식문서에 나와있지만 . 때문에 고민한걸 기억해야한다. update 할때나 다른 여러 경우 . 이 포함되어있는걸 온전히 사용하고 싶으면

FieldPath.of(필드키값) 이렇게 키값을 사용하여 다루어야한다. 안그러면 . 뒤를 매핑으로 인식하여 필드키값을 . 뒤로 끊어 저장한다.