CAP for Node

CAP Handler before vs on vs after — 어디에 뭘 써야 하나 #shorts #SAP #CAP

▶ YouTube에서 보기

이 글이 답하는 질문

  • CAP Handler의 before/on/after는 언제 실행되나?
  • 입력 검증은 어느 핸들러에서 해야 하나?
  • 기본 CRUD 동작을 덮어쓰려면 어느 핸들러를 써야 하나?

핸들러 실행 순서

Request → before → on → after → Response

직접 해보기

before — 검증 / 권한 체크

this.before("CREATE", "Orders", async (req) => {
  if (!req.data.customerId) {
    req.error(400, "customerId는 필수입니다");
  }
  // DB에 닿기 전에 실행
});

on — 비즈니스 로직 (CRUD 대체)

this.on("CREATE", "Orders", async (req) => {
  const db = await cds.connect.to("db");
  return db.create(Orders, {
    ...req.data,
    status: "PENDING",
    createdAt: new Date(),
  });
});

after — 응답 가공 / 감사 로그

this.after("READ", "Orders", (orders, req) => {
  return orders.map(o => ({
    ...o,
    displayName: "주문 #" + o.ID
  }));
});

삽질 노트

  • on 핸들러를 등록하면 CDS 기본 CRUD가 비활성화됨 — 반드시 직접 DB 처리 필요
  • before에서 req.error()를 호출하면 on은 실행되지 않음
  • after의 첫 번째 인수는 배열(READ 결과 전체)

핵심 한 줄

검증은 before, 처리는 on, 후처리는 after — 이 한 줄로 CAP Handler 위치를 결정합니다.

더 파볼 주제

  • CAP for Node 이벤트 체이닝
  • req.error vs req.reject 차이
  • before/after 핸들러 여러 개 등록 순서

댓글 0

아직 댓글이 없습니다.