PocketBase Cloud에서 Hook을 편집하고 Route를 추가하는 방법
요약
PocketBase Cloud에서 JavaScript Hook을 사용하여 커스텀 API 라우트, 레코드 이벤트 핸들러, 예약된 cron 작업 등을 구현하는 방법을 설명합니다. 별도의 백엔드 없이 대시보드에서 직접 로직을 확장하고 관리할 수 있습니다.
핵심 포인트
- PocketBase Cloud 대시보드에서 직접 JS Hook 작성 및 관리 가능
- 커스텀 API 라우트 추가 및 레코드 변경 이벤트 처리 지원
- cron 작업을 통한 예약된 로직 실행 및 이메일 발송 기능
- 무거운 워크로드나 대규모 의존성이 필요한 경우 별도 백엔드 권장
Hook을 통한 확장
PocketBase hook을 사용하면 서버 내의 인스턴스에서 직접 커스텀 JavaScript를 실행할 수 있습니다. 별도의 백엔드를 배포할 필요 없이 API route를 추가하거나, 레코드 변경에 반응하거나, cron job을 예약하거나, 이메일을 보낼 수 있습니다.
PocketBase Cloud에서는 대시보드에서 직접 hook을 작성하고 관리할 수 있습니다. 인스턴스를 열고 Hooks 탭으로 이동하세요.
Hook 생성하기
- 대시보드에서 PocketBase 인스턴스를 엽니다.
- Hooks 탭으로 이동합니다.
- New Hook을 클릭하고, 파일 이름을
.pb.js로 끝나는 이름(예:main.pb.js)으로 지정합니다. - 코드를 작성하고 저장하면 인스턴스가 자동으로 hook을 다시 로드합니다.
예시: 커스텀 API route
routerAdd("GET", "/api/hello/{name}", (e) => {
const name = e.request.pathValue("name");
return e.json(200, { message: `Hello ${name}!` });
...
작성한 route는 즉시 다음에서 사용할 수 있습니다:
예시: 레코드 변경에 반응하기
레코드가 생성, 업데이트 또는 삭제될 때마다 로직을 실행합니다:
onRecordCreate((e) => {
// 레코드가 영구 저장되기 전에 실행됩니다 — 여전히 수정이 가능합니다
e.record.set("slug", e.record.get("title").toLowerCase().replaceAll(" ", "-"));
...
예시: 예약된 cron job
cronAdd("cleanup", "0 3 * * *", () => {
const records = $app.findRecordsByFilter(
"sessions",
...
예시: 이메일 보내기
onRecordAfterCreateSuccess((e) => {
const message = new MailerMessage({
from: { address: e.app.settings().meta.senderAddress },
...
Hook이 접근할 수 있는 것들
Hook은 PocketBase의 내장 JavaScript VM에서 실행되며 다음 항목에 접근할 수 있습니다:
$app— 전체 PocketBase app 인스턴스 (레코드 쿼리, 생성, 업데이트)routerAdd— 커스텀 HTTP route 등록onRecord*이벤트 핸들러 — 생성(create), 업데이트(update), 삭제(delete) 전/후cronAdd— cron 스타일의 예약된 작업$http.send()— 제3자 API로 외부 HTTP 요청 전송$os,$filesystem,$security— 유틸리티 네임스페이스
전체 API에 대한 내용은 PocketBase JSVM 문서를 참조하세요.
대신 백엔드를 사용해야 하는 경우
Hooks는 데이터와 연결된 가벼운 로직을 처리하기에 완벽합니다. 하지만 더 무거운 워크로드 — 장시간 실행되는 작업 (long-running jobs), 대규모 의존성 (large dependencies), 웹소켓 (websockets), 또는 일반적인 프로젝트처럼 로컬에서 개발하고 테스트하고 싶은 코드 — 의 경우에는 인스턴스와 함께 전용 백엔드를 배포하세요.
PocketBase Cloud 대시보드에서 PocketBase 인스턴스, hooks, 환경 변수 (environment variables), 백업, 그리고 커스텀 도메인을 배포하고 관리할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기