このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
データソースマネージャー(DataSourceManager インスタンス)は、複数のデータソース(メインデータベース main、ログデータベース logging など)を管理およびアクセスするために使用されます。複数のデータソースが存在する場合や、データソースを跨いでメタデータにアクセスする必要がある場合に使用します。
| シーン | 説明 |
|---|---|
| 多データソース | すべてのデータソースを列挙する、またはキーを指定して特定のデータソースを取得する。 |
| データソースを跨いだアクセス | 現在のコンテキストのデータソースが不明な場合に、「データソースキー + コレクション名」の形式でメタデータにアクセスする。 |
| フルパスによるフィールド取得 | 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 は既存のものを上書きするか、新しく追加します。