Esta documentação foi traduzida automaticamente por IA.
Migration
Durante o desenvolvimento e as atualizações de plugins do NocoBase, a estrutura do banco de dados ou as configurações dos plugins podem sofrer alterações incompatíveis. Para garantir que os upgrades sejam executados sem problemas, o NocoBase oferece um mecanismo de Migration para lidar com essas mudanças através da criação de arquivos de migration. Este guia vai te ajudar a entender sistematicamente como usar e desenvolver Migrations.
Conceito de Migration
Migration é um script que é executado automaticamente durante os upgrades de plugins, e é usado para resolver os seguintes problemas:
- Ajustes na estrutura da tabela de dados (adicionar campos, modificar tipos de campos, etc.)
- Migração de dados (como atualizações em lote de valores de campos)
- Atualizações de configuração ou lógica interna do plugin
O momento de execução das Migrations é dividido em três tipos:
Criar Arquivos de Migration
Os arquivos de Migration devem ser colocados no diretório do plugin, em src/server/migrations/*.ts. O NocoBase oferece o comando create-migration para gerar arquivos de migration rapidamente.
Parâmetros Opcionais
Exemplo
O caminho do arquivo de migration gerado é o seguinte:
Conteúdo inicial do arquivo:
⚠️
appVersioné usado para identificar a versão alvo do upgrade. Ambientes com versões anteriores à versão especificada executarão esta migration.
Escrevendo Migrations
Nos arquivos de Migration, você pode acessar as seguintes propriedades e APIs comuns através de this para operar facilmente o banco de dados, plugins e instâncias da aplicação:
Propriedades Comuns
-
this.app
Instância atual da aplicação NocoBase. Pode ser usada para acessar serviços globais, plugins ou configurações. -
this.db
Instância do serviço de banco de dados, fornece interfaces para operar coleções (modelos). -
this.plugin
Instância do plugin atual, pode ser usada para acessar métodos personalizados do plugin. -
this.sequelize
Instância do Sequelize, pode executar diretamente SQL nativo ou operações de transação. -
this.queryInterface
QueryInterface do Sequelize, comumente usada para modificar estruturas de tabela, como adicionar campos, excluir tabelas, etc.
Exemplo de Escrita de Migration
Além das propriedades comuns listadas acima, a Migration também oferece APIs ricas. Para documentação detalhada, consulte a API de Migration.
Acionar Migrations
A execução das Migrations é acionada pelo comando nocobase upgrade:
Durante o upgrade, o sistema determinará a ordem de execução com base no tipo de Migration e no appVersion.
Testando Migrations
No desenvolvimento de plugins, é recomendável usar um Mock Server para testar se a migration é executada corretamente, evitando danos aos dados reais.
Dica: Usar um Mock Server pode simular rapidamente cenários de upgrade e verificar a ordem de execução da Migration e as alterações de dados.
Recomendações de Práticas de Desenvolvimento
- Divida as Migrations
Tente gerar um arquivo de migration por upgrade para manter a atomicidade e simplificar a solução de problemas. - Especifique o Momento de Execução
EscolhabeforeLoad,afterSyncouafterLoadcom base nos objetos de operação, evite depender de módulos não carregados. - Gerencie o Versionamento
UseappVersionpara especificar claramente a versão aplicável à migration e evitar execuções repetidas. - Cobertura de Testes
Verifique a migration em um Mock Server antes de executar o upgrade em um ambiente real.

