파이어베이스는 구글이 인수한 모바일 앱 개발에 최적화된 기능을 제공하는 서비스이다.
다음은 주요 기능들을 정리한 표이다.

이번에 사용할 파이어베이스의 기능인 파이어스토어 는 NoSQL 데이터베이스 이다.
필요한 서버와 인프라 관리를 구글에서 해주기 때문에 백엔드 프로그래밍에 대해 크게 신경 쓸 필요 없이 서버를 구성할 수 있다.
클라이언트와 서버의 데이터를 실시간으로 연동하고 오프라인 지원이 자동으로 되어 네트워크 지연과 인터넷 연결과 관계없이 데이터를 저장할 수 있다.
파이어베이스에서 제공하는 파이어스토어 SDK를 사용하면 따로 HTTP 요청 코드를 작성할 필요 없이 제공되는 SDK로 질의적인 프로그래밍을 할 수 있다.
파이어스토어는 컬렉션(collection)과 문서(document) 두 가지 데이터 개념이 있다.
SQL 기반의 데이터베이스와 비교하면 컬렉션은 테이블에 해당되고 문서는 열(row)에 해당한다.
NoSQL 문서는 SQL 데이터베이스와 비교해 더 유연한 데이터 구조를 사용할 수 있다.
첫 번째로 add() 함수 를 이용한 삽입 방법이다.
add() 함수 를 이용해서 문서를 삽입하면 파이어스토어에서 자동으로 문서의 ID값을 생성해준다.
final data = {
'name': '코드팩토리',
'age': 31,
'favoriteFoods': ['치킨', '피자', '라면'],
};
// add() 함수를 이용해 문서 삽입하기
FirebaseFirestore.instance
.collection('person')
.add(data);
add() 함수 와 다르게 set() 함수 를 이용하면 직접 문서의 ID값을 지정할 수 있다.
final data = {
'name': '코드팩토리',
'age': 31,
'favoriteFoods': ['치킨', '피자', '라면'],
};
'age': 31,
'favoriteFoods': ['치킨', '피자', '라면'],
};
// set() 함수를 이용해 문서 삽입하기
FirebaseFirestore.instance
.collection('person')
.doc('1')
.set(data);
파이어스토어에서 특정 문서를 삭제할 때는 delete() 함수 를 사용하면 된다
// delete() 함수로 문서 삭제하기
FirebaseFirestore.instance
.collection('person')
.doc('1')
.delete();
파이어스토어는 아주 강력한 문서 조회 기능을 제공한다.
데이터가 변경될 때마다 실시간으로 (Stream) 업데이트를 반영받을 수도 있고 1회성으로 (Future) 데이터를 업데이트받을 수도 있다.
// 실시간으로 컬렉션 업데이트받기
FirebaseFirestore.instance
.collection('person')
.snapshots();
문서를 업데이트할 때는 update() 함수 를 사용하면 된다.
// 컬렉션의 특정 문서 업데이트하기
FirebaseFirestore.instance
.collection('person')
.doc('1')
.update({
'name': '골든래빗',
});
update() 함수를 실행하면 선택된 문서들을 update() 함수에 입력된 값들로 업데이트할 수 있다.
이 예제에서는 ID가 1인 문서의 name값이 '골든래빗'으로 변경된다.