Firebase 클라우드 기능, Firebase 백엔드 패키지는 Filled Stacks에서 제공


소개하다.
본고에서 우리는 firebase-backend을 통해 FilledStacks팩을 어떻게 사용하는지 이해할 것이다.왜 이 소프트웨어 패키지가 존재합니까? 우리는 왜 그것을 사용해야 합니까?이 장면에서 당신의 응용 프로그램에 많은 클라우드 기능이 있을 것이다. 당신은 그것들을 자신의 단독 파일로 내보낼 수 있지만, 이것은 매우 도전적일 수도 있고, 어떤 방식으로 구조 설계를 해야 할 수도 있다. 이것은 당신에게 유지보수가 가능하고 더욱 쉽다.Firebase 백엔드 패키지는 이 문제를 처리하지만, 우리는 반드시 어떤 약속을 따라야 합니다. 그렇지 않으면 구축 과정에서 사용자가 정의한 기능을 식별할 수 없고 배치할 수 없습니다. 이것은 Firebase 백엔드가 내가 보기에 고집스럽다는 것을 의미합니다.
Dane Mackier는Fireship의 유튜브 채널에서 이 패키지의 동영상 튜토리얼을 설명했습니다. 만약 당신이 아직 동영상을 보지 못했다면, 여기에 당신이 볼 수 있는 링크가 있습니다.
또한Firebase와 Flatter에 고품질의 콘텐츠를 제공할 수 있도록 구독과 채널을 꼭 구독해 주십시오!
그렇지 않으면, 만약 당신이 이곳에서 공부하는 것을 좋아한다면, 계속 읽으세요!

장치
콘솔과 코드 라이브러리에 Firebase 프로젝트를 만들었다고 가정하지만 클라우드 기능을 사용하려면 Firebase Blaze plan을 사용해야 합니다.지금부터 시작하겠습니다.
루트 디렉토리에 있는 경우 NPM을 통해 패키지를 설치합니다.
$ npm install firebase-backend
완료되면 index.ts 또는 index.js 파일을 계속 설치할 수 있습니다.하지만 이 문서에서 TypeScript를 선택하므로 firebase-backendindex.ts 패키지를 설치할 예정입니다.
import { FunctionParser } from "firebase-backend";
import * as admin from "firebase-admin";

admin.initializeApp();

exports = new FunctionParser(__dirname, exports).exports;
여기서 FunctionParser에서 firebase-backend을 가져오고 Firestore와 Admin SDK를 사용한다고 가정하면 firebase-admin도 가져옵니다.이것은 우리가 admin.initializeApp()으로 관리자를 초기화한 유일한 곳이다
그리고 exports에서 내보낸 반환값으로 FunctionPaser을 설정합니다.

파일 구조
이 패키지를 사용할 때, 파일 구조는 기능 기반 구조에 있고, REST 노드인지 Firestore 조회 (onCreate, onDelete, onUpdate, onWrite) 를 기반으로 하는 이벤트 구동 클라우드 함수인지 두 개의 하위 디렉터리가 구분됩니다.
src/
 - orders
   - reactive
     - onOrderCreated.function.ts
   - restful
     - confirmOrder.endpoint.ts
index.ts
orders은 기능 폴더로 reactive 하위 디렉터리와 restful 하위 디렉터리를 포함한다.이 중 reactive은 이벤트 구동으로Firestore 조회의 변경 사항을 감청하고 restful 하위 디렉터리는 우리의 REST 단점으로 지정된 HTTP 방법(GET, POST, PUT, DELETE 등)을 통해 접근할 수 있습니다.
보시다시피 reactive 폴더에서 우리는 파일을 onOrderCreated.function.ts으로 명명했는데 그 중에서 onOrderCreated은 클라우드 함수 이름이고 function은 FunctionParser에게 클라우드 함수라고 알려줄 것입니다. 코드에서도 onOrderCreated이라고 부릅니다.

onOrderCreated.기능ts
import * as functions from "firebase-functions";

exports.onOrderCreated = functions.firestore
  .document('orders/{orderId}')
  .onCreate((snapshot, context) => {
     // code
  })
또 다른 방법은,
import * as functions from "firebase-functions";

export const onOrderCreated  = functions.firestore
  .document('orders/{orderId}')
  .onCreate((snapshot, context) => {
     // code
  })

확인자.종점ts
현재 REST 노드를 만들기 위해 Endpoint에서 firebase-backend과 매거 RequestType을 가져오고 HTTP 방법을 사용하여 노드에 접근해야 하는지 알려 줍니다
import { Request, Response } from "express";
import { RequestType, Endpoint } from "firebase-backend";

export default new Endpoint(
  "confirmOrder/:id",
  RequestType.PATCH,
  (request: Request, response: Response) => {
  const params = request.params

  response.status(200).json({ message: `Order confirmed for ID ${params.id}` })
})
이것이 바로 우리가 클라우드 함수와 REST 단점을 정의하는 방식이다

구축 및 배포
다른 작업을 수행하기 전에 rimraf을 설치하고 package.json 파일을 구성해야 합니다.
이제 rimraf을 다음과 같은 방법으로 개발자 종속 항목으로 설치합니다.
npm i -d rimraf
그리고 스크립트에서 package.json을 수정하도록 하겠습니다.
"scripts": {
    ...
    "clean": "rimraf lib/",
    "prebuild": "npm run clean",
  },
이제 "clean"과 "prebuild"를 추가하면 구축을 실행할 때마다 "prebuild"를 실행합니다.
완료되면 시뮬레이터를 시작하고 테스트를 진행하거나 클라우드 기능을Firebase 서버에 배치할 수 있습니다.

결론firebase-backend 패키지는 우리가 클라우드 기능을 위해 생산급 코드를 구축하는 데 도움을 주었다. 이것은 우리의 클라우드 기능이 유지보수적이고 읽을 수 있으며 디버깅하기에 매우 적합하다는 것을 의미한다. 왜냐하면 우리가 어떻게 이름을 지었는지, 그리고 firebase-backend이 어떻게 우리를 이렇게 하도록 격려했는지 말이다.
이것은 여전히 FilledStacks의 새로운 패키지이지만, 틀림없이 아주 좋은 패키지일 것이다. 나는 그것으로 나의 모든 응용 프로그램을 만들 것이다.
FilledStacks는 항상 저에게 인상적입니다. 그래서 만약에 플래터를 좋아한다면 반드시 https://www.filledstacks.com/을 보십시오.
이것이 바로 내가 가진 모든 것이다. 당신이 시간을 내서 이 글을 읽어 주셔서 감사합니다. 나는 매우 고맙습니다. 만약 이것이 당신에게 도움이 된다면 나도 매우 기쁩니다.건배!

좋은 웹페이지 즐겨찾기