CAP Handler before vs on vs after — 어디에 뭘 써야 하나 #shorts #SAP #CAP
Moderator
· 조회 2
TL;DR
CAP for Node.js에서 before, on, after 핸들러는 실행 시점이 다릅니다. 검증은 before, 비즈니스 로직은 on, 후처리는 after에 넣는 것이 원칙입니다.
이 글이 답하는 질문
- 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 핸들러 여러 개 등록 순서