[]
        
(Showing Draft Content)

원격 열 CRUD

행 데이터 동기화 외에도 원격 테이블은 열 정의를 서버와 동기화할 수 있습니다.

이를 통해 다음이 가능합니다.

  • 동적 열 생성

  • 열 속성 업데이트

  • 열 제거

  • 중앙 집중식 스키마 관리

열 작업에는 해당 원격 엔드포인트가 필요합니다.

원격 열 관리 활성화

열을 원격으로 관리하려면 다음을 구성합니다.

  • getColumns

  • addColumn

  • updateColumn

  • removeColumn

예제:

const orders = dataManager.addTable("orders", {
    remote: {
        read: {
            url: "http://localhost:3000/api/orders",
            method: "GET"
        },
        getColumns: {
            url: "http://localhost:3000/api/orders/columns",
            method: "GET"
        },
        addColumn: {
            url: "http://localhost:3000/api/orders/columns",
            method: "POST"
        },
        updateColumn: {
            url: "http://localhost:3000/api/orders/columns",
            method: "PUT"
        },
        removeColumn: {
            url: "http://localhost:3000/api/orders/columns",
            method: "DELETE"
        }
    },
    autoSync: true
});

orders.fetch();

getColumns

getColumns는 서버에서 열 정의를 가져옵니다.

일반적인 사용 사례:

  • 원격 저장소에서 스키마 초기화

  • 클라이언트와 서버의 열 구조 일치 보장

응답은 데이터 매니저와 호환되는 열 정의 목록을 반환해야 합니다.

열 구조에 대한 자세한 내용은 API 참조에 설명되어 있습니다.

addColumn

테이블 시트에서 새 열이 정의되면 원격 요청이 전송됩니다.

단일 동기화 모드에서는:

  • 요청이 즉시 전송됩니다.

  • 서버가 새 열 정의를 저장합니다.

일괄 모드에서는:

  • 변경 사항이 로컬에 저장됩니다.

  • 열 변경 사항은 submitChanges() 중에 전송됩니다.

updateColumn

열 속성이 수정되면:

  • 캡션

  • 데이터 형식

  • 기본값

  • 기본 키 플래그

해당 원격 엔드포인트가 호출됩니다.

단일 동기화 모드에서는:

  • 즉시 전송됩니다.

일괄 모드에서는:

  • 저장되었다가 다른 변경 사항과 함께 제출됩니다.

removeColumn

열이 제거되면:

  • 서버는 해당 열 정의를 삭제해야 합니다.

  • 연결된 데이터 동작은 서버 구현에 따라 달라집니다.

단일 동기화 모드에서는:

  • 즉시 요청됩니다.

일괄 모드에서는:

  • 일괄 payload에 포함됩니다.

열 변경 사항의 일괄 동작

batch: true가 활성화된 경우:

  • 행 변경 사항과 열 변경 사항이 결합됩니다.

  • submitChanges()는 모든 수정 사항을 함께 전송합니다.

  • 가능하면 서버는 일괄 처리를 원자적으로 처리해야 합니다.

예제 제출 흐름:

orders.submitChanges();

보류 중인 변경 사항 취소:

orders.cancelChanges();

일괄 payload에는 다음이 포함될 수 있습니다.

  • addColumn

  • updateColumn

  • removeColumn

  • insert

  • update

  • delete

정확한 요청 구조는 API 참조에 정의되어 있습니다.

사용자 지정 열 처리기

URL 구성을 사용하는 대신 작업을 함수로 정의할 수 있습니다.

const orders = dataManager.addTable("orders", {
    remote: {
        read: function () {
            return Promise.resolve([...]);
        },
        addColumn: function (change) {
            return Promise.resolve(change);
        }
    },
    autoSync: true
});

이를 통해 다음이 가능합니다.

  • 사용자 지정 전송 로직

  • 미들웨어 통합

  • Mock 구현

참고:

함수 처리기는 내보내기 중 직렬화할 수 없습니다.

중요 제약 사항

원격 열 동기화에는 다음이 필요합니다.

  • 일관된 열 식별자(value)

  • 열 저장을 위한 서버 측 지원

  • 데이터 형식 변경에 대한 올바른 처리

서버 유효성 검사에 실패하면:

  • 작업은 오류를 반환해야 합니다.

  • 테이블 상태는 실패 결과를 반영합니다.

서버 측 스키마 적용은 애플리케이션별로 다릅니다.