이 문서는 AI에 의해 번역되었습니다. 정확한 정보는 영어 버전을 참조하세요.
데이터 소스 관리자(DataSourceManager 인스턴스)는 여러 데이터 소스(예: 메인 데이터베이스 main, 로그 데이터베이스 logging 등)를 관리하고 액세스하는 데 사용됩니다. 다중 데이터 소스가 존재하거나 데이터 소스 간 메타데이터 액세스가 필요한 경우에 사용합니다.
| 시나리오 | 설명 |
|---|---|
| 다중 데이터 소스 | 모든 데이터 소스 열거, 키(key)로 특정 데이터 소스 가져오기 |
| 데이터 소스 간 액세스 | 현재 컨텍스트의 데이터 소스를 알 수 없을 때, 「데이터 소스 키 + 컬렉션 이름」으로 메타데이터 액세스 |
| 전체 경로로 필드 가져오기 | dataSourceKey.collectionName.fieldPath 형식을 사용하여 데이터 소스 간 필드 정의 가져오기 |
주의: 현재 데이터 소스만 조작하는 경우
ctx.dataSource를 우선적으로 사용하세요. 데이터 소스를 열거하거나 전환해야 할 때만ctx.dataSourceManager를 사용합니다.
| 요구 사항 | 권장 용법 |
|---|---|
| 현재 컨텍스트에 바인딩된 단일 데이터 소스 | ctx.dataSource (예: 현재 페이지/블록의 데이터 소스) |
| 모든 데이터 소스에 대한 진입점 | ctx.dataSourceManager |
| 데이터 소스 목록 표시 또는 전환 | ctx.dataSourceManager.getDataSources() / getDataSource(key) |
| 현재 데이터 소스 내에서 컬렉션 가져오기 | ctx.dataSource.getCollection(name) |
| 데이터 소스 간 컬렉션 가져오기 | ctx.dataSourceManager.getCollection(dataSourceKey, collectionName) |
| 현재 데이터 소스 내에서 필드 가져오기 | ctx.dataSource.getCollectionField('users.profile.avatar') |
| 데이터 소스 간 필드 가져오기 | ctx.dataSourceManager.getCollectionField('main.users.profile.avatar') |
getCollectionField의 경로 형식은 dataSourceKey.collectionName.fieldPath이며, 첫 번째 세그먼트는 데이터 소스 키, 그 다음은 컬렉션 이름과 필드 경로입니다.getDataSource(key)는 데이터 소스가 존재하지 않을 경우 undefined를 반환하므로, 사용 전 null 체크를 권장합니다.addDataSource는 키가 이미 존재할 경우 예외를 발생시킵니다. upsertDataSource는 기존 항목을 덮어쓰거나 새로 추가합니다.