본문 바로가기

플러터와 파이어베이스 2탄- 파이어스토어에 자료 저장하기(create)-(1)

ironwhale 2022. 6. 14.

플러터와 파이어베이스 2탄 파이어 스토어에 저장하기 편입니다. CRUD 중 Create에 해당하는 내용인데요. 파이어베이스 초기 설정을 하지 않으신 분은 아래 링크로 가셔서 파이어 베이스와 플러터 프로젝트를 연결해 주시기 바랍니다. 

https://jh-industry.tistory.com/61

 

플러터와 파이어베이스 1탄- 플러터 3.0 업데이트 후 파이어베이스(firebase) 설정법(2)

이전 포스팅 플러터와 파이어베이스 1탄 - 플러터 3.0 업데이트 후 파이어베이스(firebase) 설정법(1) Flutter 3.0은 파이어베이스가 정식 지원 플러터 3.0 업데이트 후 저에게 가장 크게 와닿는 변화는 f

jh-industry.tistory.com


제가 전에 만든 파이어 스토어 관련 포스팅입니다.  여기 더 자세한 설명이 있으니 초심자 분들은 여기 보셔도 될거 같습니다. 

 

[Flutter, firebase]파이어 스토어에서 데이터 저장하고 불러오기

순서 파이어베이스에 프로젝트를 생성한다. dart package 설치 cloud_firestore firebase_core 프로젝트와 파이어베이스를 연결한다. flutterfire configure 명령어를 실행(저는 CLI를 이용하였습니다. ) 파이어..

jh-industry.tistory.com


파이어스토어 관련 복습

자세한 내용은 링크를 참조해 주시기 바랍니다.  클릭해주세요

- 콜렉션은 다른 데이터베이스에 테이블이랑 같은 개념이고 다큐먼트는 각각의 데이터(row, record)를 의미합니다. 

- DocumentReference는 특정 다큐먼트(데이터)의 위치를 나타내는 자료형 -> pk랑 비슷한 의미로 이해 될듯...

- 실제 데이터는 DocumentSnapshot 형태로 가지고 옵니다. 

- CollectionReference - QuerySnapshot 특정 콜렉션 안에 있는 다큐멘트들을 가져올때 사용합니다. 

필요한 패키지를 설치

cloud_firestore: ^3.1.17

 

자료형 만들기(클래스 만들기) 

플러터에서 파이어베이스로 자료를 저장하고 불러올때는 클래스로 하나의 자료형을 만들어서 데이터를 처리합니다. 

이걸 편하게 해주는 플러그인이 Json to Dart입니다. 이 플러그인을 사용하면 손쉽게 클래스를 만들수 있습니다. 단, 어느정도 실제 자료형에 맞게 수정은 필요합니다. 

제가 만든 자료형은 아래와 같습니다. 단순히 문자열과 시간만 저장하려고합니다.

import 'package:cloud_firestore/cloud_firestore.dart';

/// motto : "세계적 클래스의 타이탄들에게는 초능력이 없었다. 대신 그들에게는 뚜렷한 목표(계획)가 있다."
/// date : "2022-03-29 13:02:21"
/// reference : "reference"

class FireModel {
  // 사용되는 자료형
  String? motto;
  Timestamp? date;
  DocumentReference? reference;

  //생성자
  FireModel({
    this.motto,
    this.date,
    this.reference,
  });

  //json => Object로, firestore에서 불러올때
  FireModel.fromJson(dynamic json, this.reference) {
    motto = json['motto'];
    date = json['date'];
  }

  // Named Constructor with Initializer
  // fromSnapShot Named Constructor로 snapshot 자료가 들어오면 이걸 다시 Initializer를 통해
  // fromJson Named Constructor를 실행함
  // DocumentSnapshot 자료형을 받아 올때 사용하는 Named Constructor
  // 특정한 자료를 받아 올때 사용한다.
  FireModel.fromSnapShot(DocumentSnapshot<Map<String, dynamic>> snapshot)
      : this.fromJson(snapshot.data(), snapshot.reference);

  // Named Constructor with Initializer
  // 컬렉션 내에 특정 조건을 만족하는 데이터를 다 가지고 올때 사용한다.
  FireModel.fromQuerySnapshot(
      QueryDocumentSnapshot<Map<String, dynamic>> snapshot)
      : this.fromJson(snapshot.data(), snapshot.reference);

  //Object => json, firestore에 저장할때
  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['motto'] = motto;
    map['date'] = date;
    return map;
  }
}

 

여기까지 하셨으면 firebase로 CRUD 구현에 절반은 하신겁니다. 다음은 저장하는 코드를 구현해보겠습니다. 

 


2022.06.16 - 플러터와 파이어베이스 2탄- 파이어스토어에 자료 저장하기(create)-(2)

 

플러터와 파이어베이스 2탄- 파이어스토어에 자료 저장하기(create)-(2)

이전편에서 편리하게 데이터를 가공하기위한 자료형을 만들었습니다. 이번에는 파이어베이스 공식 문서를 보고 데이터를 파이어스토어에 저장하는 코드를 작성해보도록 하겠습니다. 이 포스

jh-industry.tistory.com

2022.06.17 - 플러터와 파이어베이스 3탄 - 파이어 베이스 데이터 가져오기(READ)-DocumentReference란?? CollectionReference

 

플러터와 파이어베이스 3탄 - 파이어 베이스 데이터 가져오기(READ)-DocumentReference란?? CollectionReferen

플러터로 파이어 베이스 데이터 가져오기(READ) 1탄과 2탄에 이어 이번에는 파이어베이스(파이어스토어)에 저장된 데이터를 불러오는 방법에 대해 알아보겠습니다. 우선 기본 용어와 흐름 부터

jh-industry.tistory.com

2022.06.19 - 플러터와 파이어베이스 4탄 - 파이어스토어에 데이터 수정하기(UPDATE), 데이터 삭제하기(Delete)

 

플러터와 파이어베이스 4탄 - 파이어스토어에 데이터 수정하기(UPDATE), 데이터 삭제하기(Delete)

Flutter & FireBase(FireStore) 데이터 수정하기, 삭제하기 편 대망에 파이어스토어 CRUD편의 마지막입니다. 저장하기, 읽어오기, 수정하기, 삭제하기가 데이터베이스를 처음 접했을때 지겹게 듣고 실습

jh-industry.tistory.com

 

댓글