8:18 저는 왜이리 이해가 안될까요. 보고 또보고 해도 포기해야 되겠죠...
113
작성자 없음
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);이부분을 왜 이리 이해하기가 어려운지 모르겠어요..
저만 그런가요...돌려봐도 싶지 않네요.
.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
vadain2000님께서 질문해주신 코드는 Firebase Firestore에서 피드 데이터를 가져오는 함수로, 각 피드에 포함된 ‘writer’ 필드의 참조를 바탕으로 사용자 정보를 가져와 UserModel로 변환하는 과정을 담고 있습니다.
이해를 도와드리기 위해 코드를 간단히 설명드리겠습니다:
Firestore에서 데이터 가져오기:
getFeedList()함수는 Firestore의 ‘feeds’ 컬렉션에서 생성 날짜 기준으로 최근 데이터부터 순서대로QuerySnapshot으로 가져오고 있습니다.비동기 데이터 처리:
snapshot.docs.map((e) async { ... })구문은 각 피드 문서에 대해 비동기적으로 데이터를 처리하기 위해 사용되었습니다. 여기서Future.wait를 사용하여 모든 피드 문서에 대한 비동기 작업이 모두 완료될 때까지 기다리도록 하고 있습니다.사용자 정보 참조: 각 피드 문서의 ‘writer’ 필드는 실제 사용자 정보를 저장하는 문서의 참조입니다. 이를 통해
writerDocRef.get()을 사용하여 해당 사용자의DocumentSnapshot을 가져옵니다.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





