JavaScript
JavaScript 쿼리 스텝은 데이터 처리, 변환, 검증 등 다양한 로직을 구현할 수 있는 도구입니다. 일반적인 JavaScript 문법을 모두 사용할 수 있으며, 워크플로우의 다른 스텝들과 조합하여 복잡한 비즈니스 로직을 구현할 수 있습니다.
쿼리 추가
페이지 목록에서 워크플로우를 추가하여 쿼리 스텝을 추가할 수 있습니다.
워크플로우 스텝 사이드바에서 JavaScript 데이터 소스를 선택하면 쿼리 입력 창이 나타납니다.
별도의 데이터 소스 추가 없이 사용할 수 있습니다.
기본 구조
JavaScript 스텝의 기본 구조는 다음과 같습니다:
// 데이터 처리 로직
const result = // 처리 로직
// 결과 반환
return result;
변수 사용하기
다음과 같은 방식으로 변수를 사용할 수 있습니다.
1. 페이지 변수 사용
페이지에 등록된 변수는 page.변수명
형식으로 사용합니다.
자세한 내용은 페이지 변수 이해하기 문서를 참고해주세요.
페이지에 정의된 변수에 접근:
// 페이지 변수 사용
const currentUser = page.currentUser;
const selectedItems = page.selectedItems;
2. 워크플로우 입력값 사용
워크플로우에 정의된 입력값은 inputs.변수명
형식으로 사용합니다.
자세한 내용은 워크플로우 변수 값 가져오기 문서를 참고해주세요.
// 워크플로우 입력값 사용
const userId = inputs.userId;
const startDate = inputs.startDate;
3. 이전 스텝의 결과값 사용
이전 스텝의 결과값은 outputs.스텝명
형식으로 사용합니다.
자세한 내용은 워크플로우 스텝의 결과 값 가져오기 문서를 참고해주세요.
// 이전 스텝 결과 사용
const previousData = outputs.step1;
const dbQueryResult = outputs.queryStep.data;
4. 컴포넌트 상태값 사용
페이지 내 컴포넌트의 상태값은 컴포넌트명.상태명
형식으로 사용합니다.
자세한 내용은 컴포넌트 문서를 참고해주세요.
// 컴포넌트 상태 사용
const tableSelection = table1.selectedRows;
const inputValue = textField1.value;
일반적인 사용 사례
1. 데이터 변환
// SQL 쿼리 결과 변환
const rawData = outputs.queryStep.data;
const transformed = rawData.map((item) => ({
id: item.id,
fullName: `${item.firstName} ${item.lastName}`,
age: calculateAge(item.birthDate),
}));
return transformed;
2. 데이터 필터링
// 조건에 맞는 데이터 필터링
const items = outputs.getItems.data;
const filtered = items.filter((item) => item.price >= parseInt(inputs.minPrice) && item.stock > 0);
return filtered;
3. 데이터 집계
// 데이터 집계 처리
const orders = outputs.getOrders.data;
const summary = orders.reduce(
(acc, order) => ({
totalAmount: acc.totalAmount + order.amount,
totalCount: acc.totalCount + 1,
avgAmount: (acc.totalAmount + order.amount) / (acc.totalCount + 1),
}),
{ totalAmount: 0, totalCount: 0, avgAmount: 0 },
);
return summary;
4. API 응답 포맷팅
// API 응답 데이터 포맷팅
const apiResponse = outputs.apiStep.data;
const formatted = {
items: apiResponse.items.map((item) => ({
...item,
createdAt: new Date(item.createdAt).toLocaleDateString(),
})),
total: apiResponse.total,
page: apiResponse.currentPage,
};
return formatted;
라이브러리
dayjs
JavaScript 쿼리 스텝에서는 날짜 처리를 위한 dayjs 라이브러리가 기본적으로 제공됩니다. dayjs는 경량화된 날짜 처리 라이브러리로, moment.js와 유사한 API를 제공합니다.
// 현재 날짜/시간
const now = dayjs();
// 특정 날짜/시간
const date1 = dayjs('2024-01-01');
const date2 = dayjs('2024-01-01 13:30:00');
const date3 = dayjs(1698765432000); // timestamp
// ISO 형식 문자열로 변환
return now.toISOString();