• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

DocumentSnapshot과 QuerySnapshot 차이점

20.08.17 06:20 작성 조회수 2.3k

0

안녕하세요 강사님 강의잘듣고있습니다! 

질문있어 글남기게 되었습니다

강의에서는 

Widget _buildBody() {
return SafeArea(
child: StreamBuilder<QuerySnapshot>(

이렇게 하였지만 querySnapshot대신 1) documentSnapshot을 넣으면 왜 오류가 뜨는지 질문드리고싶습니다. 현재 제가  documentSnapshot과 querySnapshot 구분이 안되는거 같습니다.2)두개의 차이점이 무엇인지 여쭤보고 싶습니다  print문을 넣어서 차이점을 확실하고싶은데 두개 다 아래처럼나와 명확히 구분이 안되네요..

[Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot']

또 저위 코드에서 <QuerySnapshot>으로 데이터를 받았는데 _buildHasPostBody()에서 데이터를 받을때  List<DocumentSnapshotdocuments

 처럼 documentSnapshot으로 3) 왜 다른 데이터 형식으로 받는지도 궁금합니다

답변 2

·

답변을 작성해보세요.

1

StreamBuilder의 stream 으로 어떤 걸 지정했는지에 따라 타입이 달라집니다.

firestore의 collection 은 QuerySnapshot 이라는 걸 리턴하고요. 이 객체에 대해서는

javascript용 문서지만 거의 비슷하니까 참고하시면 이해하시는데 도움이 되실 겁니다.

https://firebase.google.com/docs/reference/js/firebase.firestore.QuerySnapshot

문서에서는 이 객체의 docs 를 forEach 등으로 반복하며 문서들을 꺼낼 수 있다고 되어 있는데, 플러터에서는 docs 대신 data를 씁니다.

즉 collection 스트림에서 QuerySnapshot 을 얻으면 컬렉션 정보가 다 들어있는데 여기서 data 에는 컬렉션에 포함된 모든 문서 정보가 DocumentSnapshot 형태로 들어있습니다.

이 정보를 토대로 UI를 그리기 위해서 _buildHasPostBody()에 DocumentSnapshot을 그대로 전달하고 이 객체에서 원하는 값들을 활용하여 UI를 그리는 것입니다.

0

이보성님의 프로필

이보성

질문자

2020.08.17

답변감사합니다!!! 말씀하신거 토대로 다시 공부해보겠습니다