카테고리 없음

[Flutter] Firebase Cloud Firestore

캄춰 2024. 1. 2. 16:16
728x90
반응형

https://firebase.google.com/docs/firestore/manage-data/add-data?hl=ko

 

Cloud Firestore에 데이터 추가  |  Firebase

Firebase 데모 데이가 시작되었습니다. Google 최고의 기술을 활용하여 AI 기반 풀 스택 앱을 빌드하고 성장시키는 방법에 관한 데모를 시청하세요. 의견 보내기 Cloud Firestore에 데이터 추가 컬렉션을

firebase.google.com

데이터 읽기(옵저빙)

- FirebaseFirestore.instance.collection('todo').snapshots()

: collection에 들어가는 단어가 데이터베이스의 '테이블'이다

StreamBuilder<QuerySnapshot>(
  stream: FirebaseFirestore.instance.collection('todo').snapshots(),
  builder: (context, snapshot) {
    final documents = snapshot.data!.docs;
    print('StreamBuilder.. documents:${documents.length}}');
    print('StreamBuilder.. documents:${documents.first.id}}');
    return Expanded(
      child: ListView(
        children: documents.map((item) => _buildListTile(item)).toList(),
      ),
    );
  }
)

 

 

stream에서 Firebase쪽에서 데이터가 갱신되면 데이터를 새로 받고

builder에서 해당 데이터를 snapshot데이터로 사용할 수 있게 변환한다.

 

 

데이터 쓰기

- FirebaseFirestore.instance.collection("todo") 데이터를 지정해주고

: .doc("LA") : 해당 데이터의 id를 지정해준다 

: .set(" -- ") : 해당 데이터의 내부 컬럼 값들을 지정해준다. Map형태로 넣어주면 된다.

: .onError : 데이터 삽입 중 에러가 발생하면 호출

if (_tfController.text.isNotEmpty) {
  FirebaseFirestore.instance.collection("todo")
      .doc('LA')
      .set(Todo(title: _tfController.text).toMap())
      .onError((error, stackTrace) => print('Insert... writing Document... ERROR!!! $error'),);
}

 

 

데이터 업데이트

- FirebaseFirestore.instance.collection("테이블명").doc(아이디).update(변경할 값);

: .then(function() { } ) 을 사용하면 해당 동작을 수행한 뒤 실행할 함수

todo.isDone = !todo.isDone;
FirebaseFirestore.instance.collection('todo').doc(snapshot.id).update({'isDone': todo.isDone});

 

728x90
반응형