[Flutter] Firebase Cloud Functions 사용

Functions 을 실행시키는 방법은 onCall과 onRequest가 있다. 차이점은 호출 방식에 차이가 있는데, onCall은 클라이언트의 firebase.functions()를 통해 호출하고 onRequest는 표준 https request 방식이다. 따라서 onCall은 앱 안에 Firebase Cloud Functions SDK를 설치해야하고 firebase functions 패키지를 필요로한다. onCall이 좀 더 함수처럼 동작한다. 자세한 정보는 onCall 공식 문서, onRequest 공식 문서 를 참고하자.

0. Cloud Functions 세팅

[Flutter] Firebase Cloud Functions 세팅 저번 글에 이어 진행하는 것이기 때문에 기본적으로 Firebase Cloud Funcions 세팅이 완료되어야 합니다.

  • cloud_functions: ^3.2.6 사용하였습니다.

1. onCall, onRequest

  • 다음 코드로 onCall, onRequest 테스트 두 가지를 해볼 것이다.
  • firebase deploy --only "functions:FunctionsName" 을 통해 함수를 배포해주자.

  • call request 버튼을 누르면 helloWorld 를 요청해 "Hello from Firebase!" data를 불러와 TEST에 세팅해주고 add Count 버튼을 클릭하면 addCount functions 를 호출해 count를 + 1 증가시키고 return 시킨다.
// call request
onTap: () async {
                final HttpsCallableResult result = await FirebaseFunctions
                    .instance
                    .httpsCallable('helloWorld')
                    .call();
                setState(() {
                  testValue = result.data;
                });
              },
// add Count
onTap: () async {
                final HttpsCallableResult result = await FirebaseFunctions
                    .instance
                    .httpsCallable("addCount")
                    .call(<String, dynamic>{'count': count});
                print(result.data);
                setState(() {
                  count = result.data;
                });
              },

2. 결과화면

  • onCall, onRequest 정상적으로 작동하는 것을 확인할 수 있다.

3. Cloud Firestore, 데이터베이스 트리거

Cloud Firestore 트리거, 데이터베이스 트리거 공식문서를 확인해보면 onCreate, onUpdate, onDelete, onWrite 핸들러를 통해 해당 경로에 대한 모든 유형의 변경사항을 수신 대기할 수 있다고 한다.

  • Firestore의 test collection 에 문서가 생성되면 log 가 찍히는 것을 확인해보려 한다.
  • firebase deploy --only "functions:FunctionsName" 을 통해 함수를 배포해주자.

  • firestore에 데이터를 추가하면 onCreate 함수가 트리거되고 log 가 찍히는 모습을 확인할 수 있다.

    추가로 함수 예약 문서를 확인해보면 지정된 시간에 실행하도록 함수를 예약할 수 있다고 한다. 예를 들어 자동으로 하루에 한번씩 함수를 돌려 데이터를 확인해서 수정할 수 있다.

실제 프로젝트에서 쓰려면 이런 간단한 코드가 아닌 더 복잡한 코드가 오겠지만 Functions 기능 자체로 봤을 때 활용도가 높은거 같고 익숙해진다면 쓰기도 어렵지 않은 거 같다.

끝:)

좋은 웹페이지 즐겨찾기