Flutter에서 Firebase Firestore DB 데이터를 가져오는 법을 두 가지 케이스로 나눠서 정리해보려고 함니다.
첫 번째 케이스는 컬렉션>문서>필드에서 필드의 값을 기준으로 데이터를 가져오는 경우이고,
두 번째 케이스는 컬렉션>문서>필드에서 문서의 값을 기준으로 데이터를 가져오는 경우입니다.
1. 필드의 값을 기준으로 가져올 때
문서들을 돌면서 문서 안에 있는 stddate필드 기준으로 그날 그날 변하는 formattedDate와 일치하는 필드들을 가져오는 케이스다. 여러 문서를 대상으로 조건에 맞는 문서를 가져올 때 쓰면 좋을 듯 하다.
Firestore DB 구조는 다음과 같다.
collection_name (컬렉션)
├── Doc1 (문서)
│ ├── stddate: "20240527"
│ ├── pastdate_first: "20230527"
│ ├── pastdate_second: "20220401"
│ ├── pastdate_third: "20210301"
├── Doc2 (문서)
│ ├── stddate: "20240528"
│ ├── pastdate_first: "20230528"
│ ├── pastdate_second: "20220402"
│ ├── pastdate_third: "20210302"
이 경우, Future를 return하는 async 메서드 안에서 아래처럼 collection(컬렉션멍).where(필드명, isEqualTo: 비교할 값).get();으로 가져오고, 그 이후 작업(데이터 형태 변환 및 loop 등) 해주면 된다.
2. 문서 이름을 기준으로 가져올 때
컬렉션 안에 있는 문서들 중 그날 그날 변하는 formattedDate와 일치하는 문서의 필드들을 가져오는 케이스다. 특정 문서를 직접 참조하여 데이터를 가져올 때 쓰면 좋을 듯 하다.
Firestore DB 구조는 다음과 같다.
collection_name_doc (컬렉션)
├── 20240527 (문서 ID)
│ ├── pastdate_first: "20230527"
│ ├── pastdate_second: "20220401"
│ ├── pastdate_third: "20210301"
├── 20240528 (문서 ID)
│ ├── pastdate_first: "20230528"
│ ├── pastdate_second: "20220402"
│ ├── pastdate_third: "20210302"
이 경우, Future를 return하는 async 메서드 안에서 아래처럼 collection(컬렉션명).doc(비교할값).get();으로 가져오고, 그 이후 작업(데이터 형태 변환 및 loop 등) 해주면 된다.
끝~ 감사합니다.
'Flutter' 카테고리의 다른 글
[Flutter] 공공 데이터 활용해서 앱 만들기 - api key 관련 문제 (0) | 2025.01.24 |
---|---|
[Flutter] Shared preferences를 사용해서 좋아요 버튼 구현하기 (0) | 2025.01.24 |
[Flutter] Flutter로 앱 만들때 알아놓으면 좋은 객체지향언어 키워드 (0) | 2025.01.24 |
[Flutter] Stream Builder에서 TypeError (Null check operator used on a null value) 가 뜨는 경우 해결법 (0) | 2025.01.23 |
[Flutter] 안드로이드 에뮬레이터 app:compileDebugKotlin / org.jetbrains.kotlin.compilerRunner 오류 해결하기 (0) | 2025.01.23 |