Firebase는 사용자가 좋아하는 앱과 게임을 빌드하고 성장시키는 데 도움이 되는 앱 개발 플랫폼이다. Google의 지원과 전 세계 수백만 기업의 신뢰를 받고 있다.
Firestore는 유연하고 확장 가능한 NoSQL 클라우드 데이터베이스를 사용해 클라이언트 및 서버 측 개발에 사용되는 데이터를 저장하고 동기화 할 수 있는 플랫폼이다.
Cloud Firestore는 Firebase 및 Google Cloud의 모바일, 웹, 서버 개발에 사용되는 유연하고 확장 가능한 데이터베이스이다. Firebase 실시간 데이터베이스와 마찬가지로 실시간 리스너를 통해 클라이언트 애플리케이션 간에 데이터의 동기화를 유지하고 모바일 및 웹에 대한 오프라인 지원을 제공해 네트워크 지연 시간이나 인터넷 연결에 상관없이 원활하게 반응하는 앱을 개발할 수 있다.
Firestore 하면서 자주 발생하는 이슈
네트워크 끊어졌을 때 오프라인 지원
추후 네트워크 연결되면 동기화 된다.
데이터 모델링
컬렉션 - 문서 - 필드
class Movie {
Movie({required this.title, required this.genre});
Movie.fromJson(Map<String, Object?> json)
: this(
title: json['title']! as String,
genre: json['genre']! as String,
);
final String title;
final String genre;
Map<String, Object?> toJson() {
return {
'title': title,
'genre': genre.
};
}
}
final moviesRef = FirebaseFirestore.instance.collection('movies').withConverter<Movie>(
fromFirestore: (snapshot, _) => Movie.fromJson(snapshot.data()!),
toFirestore: (movie, _) => movie.toJson(),
);
List<QueryDocumentSnapshot<Movie>> movies = await moviesRef
.where('genre', isEqualTo: 'Sci-fi')
.get()
.then((snapshot) => snapshot.docs);
await moviesRef.add(
Movie(
title: 'Star Wars: A New Hope (Episode IV)',
genre: 'Sci-fi'
),
);
Movie movie42 = await moviesRef.doc('42').get().then((snapshot) => snapshot.data()!);
Firestore ODM (Object Document Mapper)
현재 알파 버전, 주의깊게 살펴볼 것
Storage는 이름 그대로 클라우드 환경의 파일 저장소이다. 서비스를 이용하는 사용자의 사진, 문서, 동영상 등의 파일들을 업로드하고 다운로드 할 수 있다. 더욱이 업로드 된 파일의 URL을 제공하여 접근이 가능하기 때문에 앱에서 사용자의 프로필 사진을 Storage로 업로드한 후 업로드 된 프로필 사진의 URL를 이용해서 화면을 구성할 수 있다.