Esta documentação foi traduzida automaticamente por IA.
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.
Migration é um script que é executado automaticamente durante os upgrades de plugins, e é usado para resolver os seguintes problemas:
O momento de execução das Migrations é dividido em três tipos:
| Tipo | Momento de Acionamento | Cenário de Execução |
|---|---|---|
beforeLoad | Antes de todas as configurações de plugins serem carregadas | |
afterSync | Depois que as configurações de coleções são sincronizadas com o banco de dados (a estrutura da coleção já foi alterada) | |
afterLoad | Depois que todas as configurações de plugins são carregadas |
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
| Parâmetro | Descrição |
|---|---|
--pkg <pkg> | Especifica o nome do pacote do plugin |
--on [on] | Especifica o momento de execução, opções: beforeLoad, afterSync, afterLoad |
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.
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.
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.
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.
beforeLoad, afterSync ou afterLoad com base nos objetos de operação, evite depender de módulos não carregados.appVersion para especificar claramente a versão aplicável à migration e evitar execuções repetidas.