logologo
Começar
Manual
Desenvolvimento
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
Começar
Manual
Desenvolvimento
Plugins
API
logologo

Início rápido

Visão geral do desenvolvimento de plugins
Escrever o primeiro plugin
Estrutura de diretórios do projeto

Desenvolvimento do lado do servidor

Visão Geral
Plugin
Collections (Tabelas de dados)
Database (Operações de banco de dados)
DataSourceManager (Gerenciamento de fontes de dados)
ResourceManager (Gerenciamento de recursos)
ACL (Controle de acesso)
Middleware
Cache
Event (Evento)
Context (Contexto da requisição)
Migration (Script de atualização)
Logger (Log)
I18n (Internacionalização)
Command (Linha de comando)
CronJobManager (Gerenciamento de tarefas agendadas)
Test (Teste)

Desenvolvimento do lado do cliente

Visão Geral
Plugin
Context (Contexto)
Router (Rotas)
ACL (Controle de acesso)
DataSourceManager (Gerenciamento de fontes de dados)
Resource (Recurso)
Request (Requisição)
Estilos e temas
Logger (Log)
I18n (Internacionalização)
Test (Teste)

Outros

Guia de atualização de plugins
Lista de idiomas
Gerenciamento de dependências
Build
Previous PageDatabase (Operações de banco de dados)
Next PageResourceManager (Gerenciamento de recursos)
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#DataSourceManager: Gerenciamento de Fontes de Dados

NocoBase oferece o DataSourceManager para gerenciar múltiplas fontes de dados. Cada DataSource possui suas próprias instâncias de Database, ResourceManager e ACL, facilitando aos desenvolvedores o gerenciamento e a extensão flexíveis de múltiplas fontes de dados.

#Conceitos Básicos

Cada instância de DataSource contém o seguinte:

  • dataSource.collectionManager: Usado para gerenciar coleções e campos.
  • dataSource.resourceManager: Lida com operações relacionadas a recursos (como CRUD, etc.).
  • dataSource.acl: Controle de acesso (ACL) para operações de recursos.

Para facilitar o acesso, são fornecidos aliases para os membros da fonte de dados principal:

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

#Métodos Comuns

#dataSourceManager.get(dataSourceKey)

Este método retorna a instância DataSource especificada.

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

#dataSourceManager.use()

Registra um middleware para todas as fontes de dados. Isso afetará as operações em todas as fontes de dados.

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

#dataSourceManager.beforeAddDataSource()

Executa antes do carregamento da fonte de dados. Geralmente usado para registro de classes estáticas, como classes de modelo e registro de 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()

Executa após o carregamento da fonte de dados. Geralmente usado para registrar operações, configurar controle de acesso, etc.

dataSourceManager.afterAddDataSource((dataSource) => {
  dataSource.resourceManager.registerActionHandler('downloadXlsxTemplate', downloadXlsxTemplate);
  dataSource.resourceManager.registerActionHandler('importXlsx', importXlsx);
  dataSource.acl.allow('*', 'downloadXlsxTemplate', 'loggedIn'); // Define as permissões de acesso
});

#Extensão de Fontes de Dados

Para a extensão completa de fontes de dados, consulte o capítulo de extensão de fontes de dados.