inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter로 SNS 앱 만들기

게시글 정보 가져오기

8:18 저는 왜이리 이해가 안될까요. 보고 또보고 해도 포기해야 되겠죠...

113

작성자 없음

0

Future<List<FeedModel>> getFeedList() async {
  QuerySnapshot<Map<String, dynamic>> snapshot = await firebaseFirestore
      .collection('feeds')
      .orderBy('createAt', descending: true)
      .get();
  return await Future.wait(snapshot.docs.map((e) async {
    Map<String, dynamic> data = e.data();
    DocumentReference<Map<String, dynamic>> writerDocRef = data['writer'];
    DocumentSnapshot<Map<String, dynamic>> writerSnapshot =
    await writerDocRef.get();
    UserModel userModel = UserModel.fromMap(writerSnapshot.data()!);
    data['writer'] = userModel;
    return FeedModel.fromMap(data);
  }).toList());


}

이부분에서

return await Future.wait(snapshot.docs.map((e) async {
  Map<String, dynamic> data = e.data();
  DocumentReference<Map<String, dynamic>> writerDocRef = data['writer'];
  DocumentSnapshot<Map<String, dynamic>> writerSnapshot =
  await writerDocRef.get();
  UserModel userModel = UserModel.fromMap(writerSnapshot.data()!);
  data['writer'] = userModel;
  return FeedModel.fromMap(data);

이부분을 왜 이리 이해하기가 어려운지 모르겠어요..

저만 그런가요...돌려봐도 싶지 않네요.


.

 

flutter android firebase dart

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

vadain2000님께서 질문해주신 코드는 Firebase Firestore에서 피드 데이터를 가져오는 함수로, 각 피드에 포함된 ‘writer’ 필드의 참조를 바탕으로 사용자 정보를 가져와 UserModel로 변환하는 과정을 담고 있습니다.

이해를 도와드리기 위해 코드를 간단히 설명드리겠습니다:

  1. Firestore에서 데이터 가져오기: getFeedList() 함수는 Firestore의 ‘feeds’ 컬렉션에서 생성 날짜 기준으로 최근 데이터부터 순서대로 QuerySnapshot으로 가져오고 있습니다.

  2. 비동기 데이터 처리: snapshot.docs.map((e) async { ... }) 구문은 각 피드 문서에 대해 비동기적으로 데이터를 처리하기 위해 사용되었습니다. 여기서 Future.wait를 사용하여 모든 피드 문서에 대한 비동기 작업이 모두 완료될 때까지 기다리도록 하고 있습니다.

  3. 사용자 정보 참조: 각 피드 문서의 ‘writer’ 필드는 실제 사용자 정보를 저장하는 문서의 참조입니다. 이를 통해 writerDocRef.get()을 사용하여 해당 사용자의 DocumentSnapshot을 가져옵니다.

  4. UserModel 변환 및 데이터 갱신: 가져온 사용자 정보를 UserModel.fromMap을 사용하여 UserModel 객체로 변환하고 피드 데이터의 ‘writer’를 이를 바탕으로 갱신합니다. 마지막으로, 이 갱신된 데이터를 사용하여 FeedModel을 생성하고 반환합니다.

이 과정이 복잡하게 느껴질 수 있습니다. 왜냐하면 비동기 프로그래밍 및 Firestore 데이터 참조가 함께 사용되기 때문입니다. 익숙해지기까지 시간이 조금 걸릴 수 있지만, Firebase 문서와 관련 자료를 참고하여 개념을 하나씩 익히시면 이해에 큰 도움이 될 것입니다.

또한, 비슷한 주제를 다루는 질문으로는 이 링크에서 ‘제 질문이 해결되지 않았어요! 피드 문제에 대해 문서 참조와 비동기 처리에 대해 더 설명해주세요.‘라는 질문이 있었으니, 참고하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

실수로 파이어프로젝트를 삭제하여 다시 살렸는데 profile screen이 에러입니다

0

174

1

파이어베이스 연동 중 Auth 및 ImagePicker 오류 발생, 도움 요청드립니다.

0

188

2

파이어베이스에서 실수로 강의프로젝트를 실수로 삭제하였습니다.도와주세요

0

212

2

파이어베이스 스토리지 설정에 프로젝트 업그레이드 라고 뜨는데 어떻게 하면됩니까

0

261

1

이거는 왜그렇죠

0

182

1

셋팅에 문제가생겼네요

0

164

2

마치면서 에러가 댓글가져오기와 좋아요 리스트 가져오기 에러

0

125

1

섹션15페이징기능_4프로필 화면에 페이징 적용

0

110

1

섹션15페이징기능_3좋아요 목록 화면에 페이징 적용

0

198

1

섹션14페이징기능_1게시글 목록 화면에 페이징 적용 feed_repository.dart에러

0

125

1

11셕션에서 좋아요.강의코드에서 좋아요 업데이트 문제 제대로 수정된건가요

0

131

1

12댓글화면_3댓글정보 가져오기

0

243

2

11댓글화면_댓글 정보 가져오기에서 콘솔에 commentList못찍고 있어요

0

94

1

섹션11 좋아요 목록화면에서 콘솔에서 FeedModel 데이터를 못가지고 있어요

0

101

1

섹션11 좋아요.누른 게시글 정보를 화면에표시에서 Exception 왜 발생합니까

0

158

0

Storage사용..?

0

951

2

10 게시물 화면에서 조금헷갈려서요

0

154

2

게시글 이미지 슬라이드 기능추가 carouselslider에러가 났습니다

0

156

1

섹션8 게시글 정보 화면에 표시

0

123

1

섹션8 게시글 정보가져오기

0

135

1

섹션8 게시글 정보 가져오기

0

98

1

섹션8 게시글 정보 가져오기 feedModel를 못받아오는것 같습니다.

0

138

1

메인화면에서 뒤로가기 눌렀을때 어플종료관련 건

0

203

1

섹션8 게시글 정보가져오기

0

175

2