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 PageCollections (Tabelas de dados)
Next PageDataSourceManager (Gerenciamento de fontes de dados)
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#Database

Database é um componente importante das fontes de dados (DataSource) do tipo banco de dados. Cada fonte de dados do tipo banco de dados tem uma instância Database correspondente, que você pode acessar via dataSource.db. A instância de banco de dados da fonte de dados principal também oferece o alias conveniente app.db. Familiarizar-se com os métodos comuns de db é fundamental para escrever plugins de servidor.

#Componentes do Database

Um Database típico é composto pelas seguintes partes:

  • Collection: Define a estrutura da tabela de dados.
  • Model: Corresponde aos modelos ORM (geralmente gerenciados pelo Sequelize).
  • Repository: Camada de repositório que encapsula a lógica de acesso a dados, fornecendo métodos de operação de nível superior.
  • FieldType: Tipos de campo.
  • FilterOperator: Operadores usados para filtragem.
  • Event: Eventos de ciclo de vida e eventos de banco de dados.

#Momento de Uso em Plugins

#O que fazer na fase beforeLoad

Nesta fase, operações de banco de dados não são permitidas. É um momento adequado para o registro de classes estáticas ou escuta de eventos.

  • db.registerFieldTypes() — Tipos de campo personalizados
  • db.registerModels() — Registra classes de modelo personalizadas
  • db.registerRepositories() — Registra classes de repositório personalizadas
  • db.registerOperators() — Registra operadores de filtro personalizados
  • db.on() — Escuta eventos relacionados ao banco de dados

#O que fazer na fase load

Nesta fase, todas as definições de classe e eventos anteriores já foram carregados, então o carregamento das tabelas de dados não terá dependências ausentes ou omitidas.

  • db.defineCollection() — Define novas coleções (tabelas de dados)
  • db.extendCollection() — Estende configurações de coleções (tabelas de dados) existentes

Se você estiver definindo tabelas internas do plugin, é mais recomendado colocá-las no diretório ./src/server/collections. Veja Coleções.

#Operações de Dados

Database oferece duas maneiras principais de acessar e operar dados:

#Operações via Repository

const repo = db.getRepository('users');
const user = await repo.findOne({ filter: { id: 1 } });

A camada de Repository é geralmente usada para encapsular a lógica de negócios, como paginação, filtragem, verificações de permissão, etc.

#Operações via Model

const UserModel = db.getModel('users');
const user = await UserModel.findByPk(1);

A camada de Model corresponde diretamente às entidades ORM, sendo adequada para executar operações de banco de dados de nível inferior.

#Quais fases permitem operações de banco de dados?

#Ciclo de Vida do Plugin

EstágioOperações de Banco de Dados Permitidas
staticImportNão
afterAddNão
beforeLoadNão
loadNão
installSim
beforeEnableSim
afterEnableSim
beforeDisableSim
afterDisableSim
removeSim
handleSyncMessageSim

#Eventos do App

EstágioOperações de Banco de Dados Permitidas
beforeLoadNão
afterLoadNão
beforeStartSim
afterStartSim
beforeInstallNão
afterInstallSim
beforeStopSim
afterStopNão
beforeDestroySim
afterDestroyNão
beforeLoadPluginNão
afterLoadPluginNão
beforeEnablePluginSim
afterEnablePluginSim
beforeDisablePluginSim
afterDisablePluginSim
afterUpgradeSim

#Eventos/Hooks do Database

EstágioOperações de Banco de Dados Permitidas
beforeSyncNão
afterSyncSim
beforeValidateSim
afterValidateSim
beforeCreateSim
afterCreateSim
beforeUpdateSim
afterUpdateSim
beforeSaveSim
afterSaveSim
beforeDestroySim
afterDestroySim
afterCreateWithAssociationsSim
afterUpdateWithAssociationsSim
afterSaveWithAssociationsSim
beforeDefineCollectionNão
afterDefineCollectionNão
beforeRemoveCollectionNão
afterRemoveCollectionNão