[]
        
(Showing Draft Content)

스키마의 DataPath

dataPath 속성은 구문 분석된 데이터 내에서 레코드 컬렉션이 위치한 경로를 지정합니다.

일반적으로 다음과 함께 사용됩니다.

  • schema.type = "xml"

  • 중첩 JSON 구조

fetch() 중 데이터 원본은 먼저 schema.type에 따라 구문 분석됩니다.

그 다음 dataPath를 사용하여 테이블을 채울 레코드 배열의 위치를 찾습니다.

DataPath가 필요한 경우

구문 분석된 루트 값이 배열이 아닌 경우 dataPath를 정의해야 합니다.

fetch() 중 데이터 매니저는 최종적으로 해석된 레코드 컬렉션이 배열이기를 기대합니다. 루트 구문 분석 결과가 객체인 경우 레코드 배열을 포함하는 속성을 선택하기 위해 dataPath를 사용해야 합니다.

dataPath를 지정하지 않으면:

  • 루트 구문 분석 결과가 레코드 컬렉션으로 처리됩니다.

  • 루트 값이 배열이 아닌 경우 fetch() 중 오류가 발생합니다.

XML 예제

다음 XML 데이터를 가정해 보겠습니다.

<root>
    <data>
        <items>
            <row>
                <id>1</id>
                <name>Alice</name>
            </row>
            <row>
                <id>2</id>
                <name>Bob</name>
            </row>
        </items>
    </data>
</root>

실제 레코드는 다음 위치에 있습니다.

root.data.items.row

구성:

const table = dataManager.addTable("employees", {
    data: `
<root>
    <data>
        <items>
            <row>
                <id>1</id>
                <name>Alice</name>
            </row>
            <row>
                <id>2</id>
                <name>Bob</name>
            </row>
        </items>
    </data>
</root>
`,
    schema: {
        type: "xml",
        dataPath: "root.data.items.row"
    }
});

fetch() 후 테이블에는 두 개의 레코드가 포함됩니다.

중첩 JSON 예제

dataPath는 중첩 JSON 데이터에도 사용할 수 있습니다.

예제:

const table = dataManager.addTable("employees", {
    data: {
        meta: { version: 1 },
        payload: {
            items: [
                { id: 1, name: "Alice" },
                { id: 2, name: "Bob" }
            ]
        }
    },
    schema: {
        dataPath: "payload.items"
    }
});

테이블 레코드는 payload.items에서 추출됩니다.

경로 형식

  • dataPath는 점 표기법(dot notation)을 사용합니다.

  • 각 세그먼트는 중첩 속성을 나타냅니다.

  • 최종 해석 결과는 반드시 레코드 배열이어야 합니다.

해석된 경로가 존재하지 않거나 유효한 컬렉션을 참조하지 않는 경우 fetch() 중 오류가 발생합니다.

요약

dataPath는:

  • 구문 분석된 데이터에서 레코드 컬렉션을 선택합니다.

  • XML에서 일반적으로 필요합니다.

  • 중첩 JSON에 사용할 수 있습니다.

  • 반드시 배열로 해석되어야 합니다.

dataPath는 열이나 데이터 동작을 정의하지 않습니다.

열 구조는 schema.columns를 사용하여 별도로 구성합니다.