Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.
Le gestionnaire de sources de données (instance de DataSourceManager) est utilisé pour gérer et accéder à plusieurs sources de données (par exemple, la base de données principale main, la base de données de journaux logging, etc.). Il est utilisé lorsque plusieurs sources de données existent ou lorsqu'un accès aux métadonnées entre plusieurs sources de données est requis.
| Scénario | Description |
|---|---|
| Multi-sources de données | Énumérer toutes les sources de données ou obtenir une source de données spécifique par sa clé. |
| Accès multi-sources | Accéder aux métadonnées en utilisant le format « clé de la source de données + nom de la collection » lorsque la source de données du contexte actuel est inconnue. |
| Obtenir un champ par chemin complet | Utiliser le format dataSourceKey.collectionName.fieldPath pour récupérer les définitions de champs à travers différentes sources de données. |
Remarque : Si vous travaillez uniquement sur la source de données actuelle, utilisez de préférence
ctx.dataSource. Utilisezctx.dataSourceManageruniquement lorsque vous avez besoin d'énumérer ou de basculer entre les sources de données.
| Besoin | Utilisation recommandée |
|---|---|
| Source de données unique liée au contexte actuel | ctx.dataSource (ex: source de données de la page ou du bloc actuel) |
| Point d'entrée pour toutes les sources de données | ctx.dataSourceManager |
| Lister ou changer de source de données | ctx.dataSourceManager.getDataSources() / getDataSource(key) |
| Obtenir une collection dans la source de données actuelle | ctx.dataSource.getCollection(name) |
| Obtenir une collection à travers les sources de données | ctx.dataSourceManager.getCollection(dataSourceKey, collectionName) |
| Obtenir un champ dans la source de données actuelle | ctx.dataSource.getCollectionField('users.profile.avatar') |
| Obtenir un champ à travers les sources de données | ctx.dataSourceManager.getCollectionField('main.users.profile.avatar') |
getCollectionField est dataSourceKey.collectionName.fieldPath, où le premier segment est la clé de la source de données, suivi du nom de la collection et du chemin du champ.getDataSource(key) retourne undefined si la source de données n'existe pas ; il est recommandé d'effectuer une vérification de valeur nulle avant utilisation.addDataSource lèvera une exception si la clé existe déjà ; upsertDataSource écrasera la source existante ou en ajoutera une nouvelle.