logologo
Empezar
Manual
Desarrollo
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Empezar
Manual
Desarrollo
Plugins
API
logologo

Inicio rápido

Resumen de desarrollo de plugins
Escribir el primer plugin
Estructura de directorios del proyecto

Desarrollo del lado del servidor

Visión general
Plugin
Colecciones
Operaciones de base de datos
Gestión de fuentes de datos
Gestión de recursos
Control de permisos (ACL)
Middleware
Caché
Evento
Contexto de solicitud
Migración (Script de actualización)
Registro (Logger)
Internacionalización (I18n)
Línea de comandos (Command)
Gestión de tareas programadas
Pruebas

Desarrollo del lado del cliente

Visión general
Plugin
Contexto
Enrutador (Router)
Control de permisos (ACL)
Gestión de fuentes de datos
Recurso
Solicitud
Estilos y temas
Registro (Logger)
Internacionalización (I18n)
Pruebas

Otros

Guía de actualización de plugins
Lista de idiomas
Gestión de dependencias
Compilación
Previous PageOperaciones de base de datos
Next PageGestión de recursos
Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

#DataSourceManager: Gestión de Fuentes de Datos

NocoBase le ofrece DataSourceManager para la gestión de múltiples fuentes de datos. Cada DataSource cuenta con sus propias instancias de Database, ResourceManager y ACL, lo que facilita a los desarrolladores la gestión y extensión flexible de múltiples fuentes de datos.

#Conceptos Básicos

Cada instancia de DataSource incluye lo siguiente:

  • dataSource.collectionManager: Se utiliza para gestionar colecciones y campos.
  • dataSource.resourceManager: Maneja las operaciones relacionadas con los recursos (como crear, leer, actualizar y eliminar, entre otras).
  • dataSource.acl: Control de acceso (ACL) para las operaciones sobre recursos.

Para facilitar el acceso, se proporcionan alias para los miembros de la fuente de datos principal:

  • app.db es equivalente a dataSourceManager.get('main').collectionManager.db
  • app.acl es equivalente a dataSourceManager.get('main').acl
  • app.resourceManager es equivalente a dataSourceManager.get('main').resourceManager

#Métodos Comunes

#dataSourceManager.get(dataSourceKey)

Este método devuelve la instancia de DataSource especificada.

const dataSource = dataSourceManager.get('main');

#dataSourceManager.use()

Registra un middleware para todas las fuentes de datos. Esto afectará las operaciones en todas las fuentes de datos.

dataSourceManager.use((ctx, next) => {
  console.log('This middleware applies to all data sources.');
  await next();
});

#dataSourceManager.beforeAddDataSource()

Se ejecuta antes de la carga de una fuente de datos. Se usa comúnmente para el registro de clases estáticas, como clases de modelo o tipos de campo:

dataSourceManager.beforeAddDataSource((dataSource: DataSource) => {
  const collectionManager = dataSource.collectionManager;
  if (collectionManager instanceof SequelizeCollectionManager) {
    collectionManager.registerFieldTypes({
      belongsToArray: BelongsToArrayField, // Tipo de campo personalizado
    });
  }
});

#dataSourceManager.afterAddDataSource()

Se ejecuta después de la carga de una fuente de datos. Se usa comúnmente para registrar operaciones, configurar el control de acceso, etc.

dataSourceManager.afterAddDataSource((dataSource) => {
  dataSource.resourceManager.registerActionHandler('downloadXlsxTemplate', downloadXlsxTemplate);
  dataSource.resourceManager.registerActionHandler('importXlsx', importXlsx);
  dataSource.acl.allow('*', 'downloadXlsxTemplate', 'loggedIn'); // Configurar permisos de acceso
});

#Extensión de Fuentes de Datos

Para una extensión completa de las fuentes de datos, consulte el capítulo de Extensión de Fuentes de Datos.