[Flutter/Firebase] Windows 에서 Realtime database 사용하기

찌니·2023년 7월 17일
1

Flutter

목록 보기
11/13
post-thumbnail

flutter windows를 firebase와 함께 개발해본 사람들이라면 알 수 있지만, firebase Realtime database 라이브러리는 windows에서 사용할 수 없다.

firebase_core
firebase_database
firebase_auth
cloud_firestore
...
flutter에서 사용하는 firebase 라이브러리들이다.
하지만 보통 windows 빌드를 위해서는 firedart 를 사용한다.

하지만 firedart에서는 realtime database를 지원하지 않는다!!!!!
본인은 매우 당황스러웠다..
android 와 ios에서 realtime database 를 사용해 개발했는데 windows 개발에서 막히다니..
realtime database와 firestore를 모두 사용하고 있었는데 windows에서는 데이터를 공유할 수 없다니 모든 데이터 저장소를 firestore로 전환해야하나? 라고 생각했지만

참고로 firebase realtime database는 web 브라우저에서 엑세스할 수 있다.
api를 사용하여 접근 가능하다!
본인은 http 라이브러리를 사용하여 windows에서 firebase realtime database를 사용해보았다


먼저 http 라이브러리를 추가한다

Firebase Realtime Database 에 들어가면 db의 Url을 얻을 수 있다.

일반 api 처럼 데이터 저장, 불러오기, 삭제가 가능하다

import 'package:http/http.dart' as http;

final url = "https://project-56.....com"

void firebasePost() async{
	 await http.post(Uri.parse(url), body: jsonEncode(data));
}

void firebaseGet() async{
	  await http.get(Uri.parse(url)).then((value) {
        if (jsonDecode(value.body) == null) return;
        final Map<dynamic, dynamic> data =
            jsonDecode(value.body) as Map<dynamic, dynamic>;
      });
      ...
}

void firebaseRemove() async{
	await http.delete(Uri.parse(url));
}

사용시 유의해야할 점이 존재한다.
예시로 user라는 트리가 존재한다고 생각했을때, user 트리 안에 유저별로 이름, 나이, 성별을 저장한다고 가정해보자

database.ref().child('user').child('user1').set({'name': 'jinni', 'age': 17, 'gender': 'female'})

위 명령을 실행했을때 우리는

위 결과를 기대할것이고, 기대처럼 위 형태로 저장될 것이다.
하지만 api를 사용하여 접근해 post 할 경우에는 동일 형식으로 저장되지 않는다.

final url = "https://project-56.....com/user/user1"
await http.post(Uri.parse(url), body: {'name': 'james', 'age': 18, 'gender': 'male'});

기대하는 형태와는 다른 구조로, 임시로 트리를 생성해 그 내부에 데이터를 넣는 형태를 지원하고 있다.
이 점을 유의해 사용해야한다.

profile
찌니's develog

0개의 댓글