[]
데이터 매니저는 테이블 간 관계 정의를 지원합니다.
관계는 한 테이블의 필드를 다른 테이블의 필드와 연결합니다.
관계가 생성되면 관계 이름을 사용하여 관련 테이블의 필드에 접근할 수 있습니다.
관계는 DataManager 수준에서 정의됩니다.
addRelationship을 사용하여 두 테이블 간의 관계를 정의합니다.
dataManager.addRelationship(
sourceTable,
sourceFieldName,
sourceRelationshipName,
targetTable,
targetFieldName,
targetRelationshipName
);sourceTable - 관계가 정의되는 원본 테이블입니다.
sourceFieldName - 매칭에 사용되는 원본 테이블의 필드입니다.
sourceRelationshipName - 원본 테이블에서 관련 테이블에 접근할 때 사용하는 관계 이름입니다.
targetTable - 관련 대상 테이블입니다.
targetFieldName - 매칭에 사용되는 대상 테이블의 필드입니다.
targetRelationshipName - 대상 테이블에서 원본 테이블에 접근할 때 사용하는 관계 이름입니다.
이 메서드는 관계를 설명하는 IRelationship 객체를 반환합니다.
const dataManager = spread.dataManager();
const orders = dataManager.addTable("orders", {
data: [
{ orderId: 1, orderDate: "2024-01-01", employeeId: 100 },
{ orderId: 2, orderDate: "2024-01-02", employeeId: 101 }
]
});
const employees = dataManager.addTable("employees", {
data: [
{ employeeId: 100, firstName: "Nancy", title: "Manager", address: "Seattle" },
{ employeeId: 101, firstName: "Andrew", title: "Sales", address: "Tacoma" }
]
});
// 관계 생성
const relationship = dataManager.addRelationship(
orders,
"employeeId",
"employee",
employees,
"employeeId",
"orders"
);
// View에서 관련 필드 접근
const myView = orders.addView("myView", [
{ value: "orderId" },
{ value: "orderDate" },
{ value: "employee.firstName" },
{ value: "employee.title" },
{ value: "employee.address" }
]);이 예제에서:
"employee"는 orders 테이블에 정의된 관계 이름입니다.
관련 테이블 필드는 점 표기법을 사용하여 접근합니다.
relationshipName.fieldName관계가 생성된 후 관련 필드는 View에서 다음 형식으로 참조할 수 있습니다.
relationshipName.fieldName예제:
{ value: "employee.firstName" }관계 이름은 관련 테이블로 이동하기 위한 탐색 경로 역할을 합니다.
관계는 DataManager에 저장됩니다.
addRelationship를 호출할 때마다 새로운 관계 항목이 생성됩니다.
동일한 DataManager 내에 여러 관계가 공존할 수 있습니다.
관계 이름은 개발자가 정의합니다. API는 관계 이름의 고유성을 강제하지 않습니다.
관계를 제거하려면 removeRelationship를 사용합니다.
dataManager.removeRelationship("employee");관계가 제거되면 해당 관계 이름을 통한 관련 필드 접근은 더 이상 사용할 수 없습니다.