Firebase) Function Database Trigger Example
Firebase Functions의 개발환경은 TypeScript 으로 진행했다.
구글 검색을 해봐도 예시가 별로 없어서 기록차 포스팅하게 되었다.
Trigger라는 것은 특정 순간에 자동으로 실행되는 이벤트를 말하는 것이다.
Example 코드에서는 유저 생성될 때 'onUserCreate'를 호출해서 createTime이라는 값을 자동으로 database에 쓰는 것을 목표로 했다.
'onChangeMessage'는 데이터베이스의 root의 하위 /users/자신의 id/message의 값이 변경되는 순간 messagePrev라는 항목에 이전 message의 값을 저장하도록 처리했다. (이전의 메시지를 자동으로 기록하도록)
index.ts는 다음과 같다.
import * as functions from 'firebase-functions';
export const onChangeMessage = functions.database
.ref('/users/{pushId}/message')
.onUpdate((change, context)=>{
const messagePrev = change.before.val()
console.log("[ onChangeMessage ] prev ::: ", messagePrev, "change :::" + change.after.val());
return change.after.ref.parent?.update({messagePrev});
});
export const onUserCreate = functions.database
.ref('/users/{pushId}')
.onCreate((change, context)=>{
const createTime = Date.now()
return change.ref.update({createTime});
});
Database의 상태는 다음과 같다.
왼쪽(이전) - 이후(오른쪽)
message의 값을 '테스트'로 변경할때 이렇게 변경이 된다.
'테스트입니다'로 변경한 경우는 다음과 같다.
정상적으로 변경된 것을 확인할 수 있다.
프로젝트에서 이벤트로 message 항목을 변경을 해도 messagePrev가 자동으로 잘 생성이 되고,
console 페이지에서 직접 값을 변경해도 messagePrev가 자동으로 잘 생성이 된다.
정보가 너무 없어서 고생고생을 했다. ㅠㅠ
firebase deploy --only functions으로 function을 업로드하는 과정에서
'Error: HTTP Error: 400, Billing account for project '프로젝트 번호' is not found.'
에러는 Firebase 요금제를 무료인(Spark)가 아닌 종량제(Blaze)로 해야 한다는 에러 문구이다.
Firebase 인증 트리거 : [링크]
Firebase 실시간 데이터베이스 트리거 : [링크]
특정 함수는 결제가 안돼서 테스트는 못해봤다. ㅠㅠ
firebase function sample으로는 user가 생성/삭제를 할때 메일을 처리하는 형태의 코드로 예상된다.
GitHub : [링크]
★☆☆☆☆
'개발 > Unity' 카테고리의 다른 글
Unity)Firebase)Firebase Storage 활용하기 (2) | 2020.10.27 |
---|---|
Unity)Firebase) Remote Config 활용하기 (2) | 2020.10.26 |
Unity) Android Resolver ERROR: JAVA_HOME ~ (6) | 2020.10.19 |
Unity) Library/PackageCache/ ~ 에러 (4) | 2020.10.15 |
Unity) 인스펙터 읽기 전용 만들기 (Attribute - ReadOnly Property) (0) | 2020.10.15 |
댓글