Este documento ha sido traducido por IA. Para información precisa, consulte la versión en inglés.
El gestor de fuentes de datos (instancia de DataSourceManager) se utiliza para gestionar y acceder a múltiples fuentes de datos (por ejemplo, la base de datos principal main, la base de datos de registros logging, etc.). Se utiliza cuando existen múltiples fuentes de datos o cuando se requiere acceso a metadatos entre diferentes fuentes de datos.
| Escenario | Descripción |
|---|---|
| Múltiples fuentes de datos | Enumerar todas las fuentes de datos o obtener una fuente de datos específica por su clave (key). |
| Acceso entre fuentes de datos | Acceder a los metadatos utilizando el formato "clave de fuente de datos + nombre de la colección" cuando se desconoce la fuente de datos del contexto actual. |
| Obtener campos por ruta completa | Utilizar el formato dataSourceKey.collectionName.fieldPath para recuperar definiciones de campos a través de diferentes fuentes de datos. |
Nota: Si solo está operando en la fuente de datos actual, priorice el uso de
ctx.dataSource. Utilicectx.dataSourceManagersolo cuando necesite enumerar o cambiar entre fuentes de datos.
| Necesidad | Uso recomendado |
|---|---|
| Única fuente de datos vinculada al contexto actual | ctx.dataSource (ej. la fuente de datos de la página o bloque actual) |
| Punto de entrada para todas las fuentes de datos | ctx.dataSourceManager |
| Listar o cambiar fuentes de datos | ctx.dataSourceManager.getDataSources() / getDataSource(key) |
| Obtener una colección dentro de la fuente de datos actual | ctx.dataSource.getCollection(name) |
| Obtener una colección entre fuentes de datos | ctx.dataSourceManager.getCollection(dataSourceKey, collectionName) |
| Obtener un campo dentro de la fuente de datos actual | ctx.dataSource.getCollectionField('users.profile.avatar') |
| Obtener un campo entre fuentes de datos | ctx.dataSourceManager.getCollectionField('main.users.profile.avatar') |
getCollectionField es dataSourceKey.collectionName.fieldPath, donde el primer segmento es la clave de la fuente de datos, seguido del nombre de la colección y la ruta del campo.getDataSource(key) devuelve undefined si la fuente de datos no existe; se recomienda realizar una comprobación de valores nulos antes de su uso.addDataSource lanzará una excepción si la clave ya existe; upsertDataSource sobrescribirá la existente o añadirá una nueva.