본문 바로가기
junior developer :)/Flutter & Dart

[flutter]Cloud firestore (firebase 이용해서 CRUD 해보기)

by ㅁ윤슬ㅁ 2023. 6. 23.
728x90
반응형

자체 서버 없이 어플을 만들어 보기 위해서는 firebase의 다양한 기능들을 이용할 일이 굉장히 많다...ㅎㅎ

이번에는 CRUD기능을 넣기 위해서 firestore를 이용해 봤다

 

firestore를 이용하기 위해서는 먼저 firebase에서 cloud firestore를 이용할 수 있는 기본 셋팅부터 마친 뒤 패키지를 설치해준다.

dependencies: 
  firebase_core: ^2.12.0
  cloud_firestore: ^4.7.0

설치된 버전이 최신 버전이 아닐텐데 이유는 곧 정리해서 올릴 예정이다
앱은 .. 패키지들의 의존성을 신경써줘야 한다는 것을 깨닫게 된 날..

설치까지 완료 되면 

위에 규칙 부분을 true로 바꿔주지 않으면 Missing or insufficient permissions 에러가 발생할 수 있음 주의!

규칙(권한)설정을 한 뒤에 본격적으로 코드 작업 !


먼저 실행시켜줄 버튼을 간단하게 만들어주고 각 버튼을 누를 때마다 set, update, delete가 실행되도록 했다.

우선 기능 구현을 위해 스타일을 신경쓰지 않아 텍스트로 보이지만.. 버튼 맞다...ㅎㅎㅎ

C (create)
import 'package:firebase_core/firebase_core.dart';
import 'package:get/get.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class MyInfoController extends GetxController {
final FirebaseFirestore _firestore = FirebaseFirestore.instance;  // Firestore 인스턴스를 생성하고, 해당 인스턴스를 _firestore 변수에 할당하는 코드.
	void firebaseAddData() async {
     //await Firebase.initializeApp();
    await firestore.collection("phone").doc().set({
      "brand": "APPLE",
      "name": "iphone14",
      "price": 5000,
    });
  }
  }

Phone이라는 collection을 추가하고 set 메소드를 이용하여 필드 안에 brand, name, price라는 키 와 APPLE, iphon14, 5000라는 value 값을 줬다.

doc()에는 ID값을 설정해 줄 수 있는데 저렇게 빈 값으로 두게 되면 임의로 값이 설정된다.

doc('id1234')을 입력하면 ?? 아래와 같이 된다.

하나의 컬렉션 안에 여러개의 document가 들어갈 수 있다

U(update)
import 'package:firebase_core/firebase_core.dart';
import 'package:get/get.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class MyInfoController extends GetxController {
final FirebaseFirestore _firestore = FirebaseFirestore.instance;  // Firestore 인스턴스를 생성하고, 해당 인스턴스를 _firestore 변수에 할당하는 코드.

void firebaseUpdateData() async {
    await Firebase.initializeApp(); // firebase 서비스를 초기화하는 코드이다. 앱 실행시에 한번만 활용된다고 하니 필요 없으면 지워도 된다
 	await _firestore.collection("phone").doc("id123").update({
      "color": "red",
    });
  }
  }

update기능을 구현하기 위해서는 update메소드를 이용하면된다.
나같은 경우는 color/red 값을 추가했고 create할 때의 id값을 적어줬다.

정상적으로 추가 된 모습을 볼 수 있었다.

D(delete)
import 'package:firebase_core/firebase_core.dart';
import 'package:get/get.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class MyInfoController extends GetxController {
final FirebaseFirestore _firestore = FirebaseFirestore.instance;  // Firestore 인스턴스를 생성하고, 해당 인스턴스를 _firestore 변수에 할당하는 코드.

void firebaseDeleteData() async {
     //await Firebase.initializeApp();
    await _firestore.collection("phone").doc("id123").delete();
  	}
  }

id123 document를 삭제해보겠다. 

삭제 완료 !

 

firebase에서 활용할 수 있는 기능은 정말 무궁무진 한 것 같다.
정말 잘 이용해보고 싶다는 생각이 들었당 ㅎㅎ

그리고 아직 화면을 만들지 않아 READ 기능은 구현하지 않았다.
이제 화면도 그려보고 값을 출력해보고 나면 그 부분도 포스팅 해야겠다 !


참고

https://firebase.google.com/docs/firestore/security/get-started?hl=ko

728x90
반응형