자체 서버 없이 어플을 만들어 보기 위해서는 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
'junior developer :) > Flutter & Dart' 카테고리의 다른 글
[flutter] firebase version 관리(failed to recurse into submodule path... 오류) (4) | 2023.06.27 |
---|---|
[flutter] getx 라우팅 관리 & argument 값 넘겨주기 (4) | 2023.06.26 |
[flutter] futurebuilder(비동기 /여러개의 future List를 받아올 땐 future.wait) (4) | 2023.06.22 |
[flutter] flutter 소셜 로그인(1. google + firebase) (4) | 2023.06.20 |
[flutter]logger 적용하기 (print 대신 logger로 더 편리하게 console 이용하기) (4) | 2023.06.19 |