https://firebase.flutter.dev/docs/firestore/overview/
위에 기본적인 사용 쿡북이 존재하며 잘 나와있지만, 실 사용을 하며 정리해보자.
1. FireStore 란?
FireStore는 NoSQL기반에,
파이어 베이스에서 제공하는 무료 클라우드 데이터베이스이다.
다양한 앱/웹 프로젝트에서 활용가능하며,
데이터를 저장하고 동기화하기 위한 유연하고 확장 가능한 기술이다.
실시간 수신기를 통해 클라이언트 앱 간에 데이터 동기화를 유지하고,
오프라인 지원을 제공하므로 네트워크 대기 시간이나 인터넷 연결에 관계없이 작동하는 반응형 앱을 구축할 수 있다.
2. 설치
FireStore는 firebase에 기반을 두는 기술이므로, firebase_core를 필수적으로 사용해야 한다.
여기 사이트에서 cloud_firestore 를 확인하고 pub에 추가하여 설치하자..
pub에 추가하여 get 해주었다면 사용이 가능하다
3. 사용설정
이제부터 파이어스토어를 사용할건데,
먼저 파이어베이스 콘솔에서 firestore 사용을 설정해주어야 한다.
아직 Firebase와 프로젝트를 연결 해주지않았다면 이 글을 보고 먼저 연결을 해주시기 바랍니다.
사용을 설정은 어렵지않으니, 가볍게 하나의 컬렉션에 하나의 문서를 임의로 추가해보자.
여기서 등장하는 Collection, Document 는 생소하다 생각하겠지만 어려울것 없다.
+ Collection, Document 란?
Document 는 key : value 쌍의 데이터들로 구성되는 데이터 구조를 가진다.
RDB에서는 정해진 컬럼명에 정해진 길이의 자료형이 Value로 저장되야만 했다면,
nonRDB는 그저 원하는 Key:Value 를 중복을 허용해서 마음껏 만들어 넣을 수 있다.
기본키를 가지는 컬럼이 있는 RDB에서는 저장되는 순서가 중요하지 않았지만,
nonRDB는 키가 없이 저장되는 key : Value 쌍들의 순서일치 여부가 문서의 신원을 결정하는 중요한 역할을 한다.
이미 알겠지만, nonRDB은 Document안에 Document를 key안에 Value로 넣을수 있다.
{ 'employeeName' : 'Janice Collins',
'department' : 'Software engineering',
'startDate' : '10-Feb-2010',
'pastProjects' : [
{ 'projectCode' : 189847,
'projectName' : 'Product Recommendation System',
'projectManager' : 'Jennifer Delwiney' },
{ 'projectCode' : 187731,
'projectName' : 'Finance Data Mart version 3',
'projectManager' : 'James Ross'},
{ 'projectCode': 176533,
'projectName' : 'Customer Authentication',
'projectManager' : 'Nick Clacksworth'},
{ 'projectCode' : 154812,
'projectName' : 'Monthly Sales Report',
'projectManager' : 'Bonnie Rendell'}
]
}
이러한 Document들이 저장되는 데이터가 Colletion이다. (RDB로 치면, 테이블 )
이제 기본적인 NoSQL에 대해서도 알았으니 사용을 해보자!
4. FireStore 사용
1) 인스턴스 초기화
FireStore를 사용하기 위해서는 아래와 같이 앱에서 초기화를 해주어야한다.
FirebaseFirestore firestore = FirebaseFirestore.instance;
프로젝트 안에서 파이어베이스를 이미 사용하고 있다면,
아래와 같은 방법으로 FireStore 인스턴스를 만들수도 있다.
FirebaseApp secondaryApp = Firebase.app('SecondaryApp');
FirebaseFirestore firestore = FirebaseFirestore.instanceFor(app: secondaryApp);
이렇게 프로젝트 상위 레벨의 클래스에서 파이어스토어 인스턴스를 만들어주었다면,
데이터를 CRUD, 읽고 쓰고 수정하고 삭제할 수 있다.
2) Read 읽기
get() 메소드를 통해 one-time Read를 한다.
// JSON 객체 연결
final lotteryNumberRef = FirebaseFirestore.instance.collection('lottery').withConverter<LotteryNumber>(
fromFirestore: (snapshot, _) => LotteryNumber.fromJson(snapshot.data()!),
toFirestore: (LotteryNumber, _) => LotteryNumber.toJson(),
// drwNo로 데이터 가져오기
LotteryNumber lotteryNumber = lotteryNumberRef.doc(drwNo.toString()).get();
);
먼저 NoSQL 기반에 firestore는 json형식으로 key:value 구조를 가지므로,
다루고자하는 객체안에서 fromJson과 toJson을 구현두어야한다. (선행지식이 필요하므로 여기글을 참고)
3) Write 쓰기
void createdata(String drwNo, LotteryNumber lotteryNumber){
final lottery=FirebaseFirestore.instance.collection("lottery").doc(drwNo);
lottery.set(lotteryNumber);
}
4) update 수정
void deletedata(String drwNo){
final lottery=FirebaseFirestore.instance.collection("lottery").doc(drwNo);
lottery.delete();
}
5) Delete 삭제
void deletedata(String drwNo){
final lottery=FirebaseFirestore.instance.collection("lottery").doc(drwNo);
lottery.delete();
}
'Study > Flutter' 카테고리의 다른 글
[Flutter] 빌드 오류, 컴파일 오류시 해결법 (0) | 2022.12.15 |
---|---|
[Flutter] JSON 직렬화, json_annotation을 통한 제너레이트 (0) | 2022.11.18 |
[Flutter] FireAuth 로그인과 인증 (0) | 2022.08.04 |
[Flutter] Firebase flutter 설정 (0) | 2022.08.03 |
[Flutter] 로그 도우미 logger 사용법 (0) | 2022.08.02 |