Redux + firebase 사용 중, 데이터 읽어오기 질문 드립니다

SNS 만들기를 혼자 독학중입니다.
리덕스와 firebase 사용하여 독학중이며,
제가 하고싶은 기능 구현은,
게시물에서 댓글 아이콘을 을 누르면 뜨는 screen의 코멘트들 상단에 해당 게시물 제목이나 내용이 보이도록 하고싶습니다.
댓글 아이콘을 눌렀을 때, 해당 댓글이 올라오는 것 까지는 flat list로 구현을 했습니다. (아래 참조)
하지만, 딱, 해당 게시글의 제목의 내용이 보이게 하는 방법을 도저히 모르겠습니다.
screen page의 플랫리스트, 파이어베이스 데이터 구조, 리듀서와 액션부분 코드 사진 첨부드리오니
조언 부탁드립니다.

screen

firebase posts 컬렉션의 구조

action



image

reducer
image

flatlist에서 해당 comment로 이동시키고 싶다는 이야기인가요?

설명이 부족했습니다.

코멘트가 적힌 해당 post의 title만 (postTitle)
해당 Comment페이지의 flatlist 코드 위에 나타나게 하고싶습니다.

코멘트 리스트가 하나의 포스트 아래 있는 것들만 보이는건가요? 코멘트 리스트에서 눌렀을 때 이미 포스트를 가지고 있으니 포스트 타이틀 보여주는 건 어렵지 않을 거 같은데 제가 정확하게 이해를 못하겠군요. ^^;

코멘트리스트가 하나의 포스트 안에있는것들만 보이는것이 맞습니다.
코멘트리스트 페이지로 navigate하고 난 이후에 해당 코멘트의 포스트타이틀을 보여주려고 하는데요,
질문이 이상하네요 ^^;

질문을 바꿔서 다시 조언 부탁드려볼게요.

현재 제가 불러오고 싶은 데이터가, firebase firestore의 posts컬렉션 안에, Comments 안에, postTitle 데이터인데…
이 데이터를 가져오려고 합니다.

참고하면 좋은 함수나 방법이 있을까요?
(flatlist의 Key를 사용해서 데이터를 긁어오는건 가능했으나, 댓글의 갯수만큼 postTitle이 보여지게 되네요.)

posts/{postId}/comments 이렇게 들어 있는건가요?
posts/{postId}/comments/{commentId} document안에 postTitle이 있나봐요?

flatlist의 key를 쓴다는건 comments 를 보여주는 flatlist의 key로 사용한 commentId를 가지고 posts/{postId}/comments/{commentId} 도큐먼트를 읽어와서 거기 postTitle를 가져온다는 이야긴가요?

일반적인 경우
posts/{postId}에서 글을 가져온다음에, 코멘트를 보여주기 위해서 posts/{postId}/comments의 컬랙션을 읽어와서 보여주게 되지요.

postTitle를 comment 도큐먼트에 넣는 것보다, post에 넣어 두는게 맞을 거 같은데 사용 사례가 일반적이 않은거 같네요.

posts/{postId}/comments 이렇게 들어 있는건가요?
-> 네.
posts/{postId}/comments/{commentId} document안에 postTitle이 있나봐요?
-> postTitle은 posts와 comments 모두 들어있습니다.

flatlist의 key를 쓴다는건 comments 를 보여주는 flatlist의 key로 사용한 commentId를 가지고 posts/{postId}/comments/{commentId} 도큐먼트를 읽어와서 거기 postTitle를 가져온다는 이야긴가요?
-> 네 맞습니다.

일반적인 경우
posts/{postId}에서 글을 가져온다음에, 코멘트를 보여주기 위해서 posts/{postId}/comments의 컬랙션을 읽어와서 보여주게 되지요.
-> 저도 머리로는 이러한데… 코딩이 어디부터 꼬였는지 모르겠네요ㅜㅜ
며칠째 손도못대고 잠도못자고있네용…
코멘트 페이지에서 해당 게시물의 postTitle을 보여주고싶은데,
어디부분 코드를 찍어서 보여드려야 조언해주실 때 도움이 될까요?

홈스크린플랫리스트

코멘트스크린 플랫리스트

데이터가 두 군데 모두 존재하는 건 별로 좋은 방법은 아닌거 같아요.

this.props.post.feed 라는 부분도 눈에 띄네요.
feed 라는 개념은 posts를 어떤 기준으로 모아 놓은 개념인데 post아래에 있다는 것이 좀 어색합니다.

코멘트 페이지에서 해당 글의 postTitle를 보여주고 싶다면, 코멘트 페이지로 이동했다면, 코멘트 페이지에서 언제든 this.props.post.postTitle를 읽어 보여주면 되는 건 아닌가요? 코멘트 페이지에서 this.props.post를 사용할 수 없는 이유가 있을까요?

posts안의 postTitle을 사용하면 될것같은데, commenst와 동일한 uid에서 읽어오는 방법을 솔직히 말하면 모르겠네요.
그래서 comments에 postTitle을 한번 더 넣어서 flatlist로 불러오게 만들었던거에요.
그런데 이렇게 하니, postTitle이 comments의 갯수만큼 불러오는 현상이 벌어져서…
어제 검색하다보니 .slice(0 ,1)을 붙이면 postTitle을 하나만 불러올 수 있다는 사실을 알았습니다.

그런데, 막상 코드에 적용시켜놓으니 이런 에러가 뜨는데… 혹시 대안이 있을까요?

.slice(0 ,1)적용한 flat list
image
에러창

이런 건 짝 코딩을 같이 하면 좋을텐데 아쉽네요.

위의 에러는 undefined를 참조하려고 하면서 에러가 나는 거죠. this.props.post.comments 이중에 하나가 undefined로 되는 경우에 저런에러가 나죠.

좌충우돌 열심히 하시는 모습 보기 좋네요.

ㅎㅎ…감사합니다.
짝코딩이 뭔가 찾아봤는데 너무 좋아보이는군요!
choipd님과도 기회가 되면 한번 만나서 여러가지 물어보고싶네용…ㅎㅎ

참고로 제가 질문했던 이 건은 해답을 찾지 못했었습니다.
this.props.post.comments만 사용하였을땐 undefined가 나오지 않는데 왜 undefined가 나오는지 못찾았았어요…
하지만 조금 편법을 써서 해결하였습니다.

slice(0,1)을 사용해서 comments/postTitle중 하나만 띄우는 것은 포기하였고
대신 모든 comments의 postTitle을 flatlist로 나열시켰습니다.

그리고 난 후
flat list에는 horizontal={true}과 scrollEnabled={false}를 사용하였고,
view에는 width: Dimensions.get(“window”).width를 사용하였습니다.

이렇게 코드 3줄을 사용하여 화면에 postTitle들 중 하나만 보이게 만들어놓고 스크롤을 막아버렸습니다…^^;

한 일주일 고민하다 해결못해서 생각해낸 편법이지만 어쨌든 제가 원하던 결과물은 나왔군요…