Esta documentación ha sido traducida automáticamente por IA.
Durante el desarrollo y las actualizaciones de los plugins de NocoBase, la estructura de la base de datos o la configuración de un plugin pueden sufrir cambios incompatibles. Para asegurar una actualización fluida, NocoBase ofrece un mecanismo de Migración que permite gestionar estos cambios mediante la escritura de archivos de migración. Esta guía le ayudará a comprender de forma sistemática cómo utilizar las migraciones y su flujo de trabajo de desarrollo.
Una migración es un script que se ejecuta automáticamente durante las actualizaciones de los plugins y se utiliza para resolver los siguientes problemas:
El momento de ejecución de las migraciones se divide en tres categorías:
| Tipo | Momento de activación | Escenario de ejecución |
|---|---|---|
beforeLoad | Antes de que se carguen todas las configuraciones de los plugins | |
afterSync | Después de que las configuraciones de las colecciones se sincronicen con la base de datos (la estructura de la tabla ya ha cambiado) | |
afterLoad | Después de que se carguen todas las configuraciones de los plugins |
Los archivos de migración deben ubicarse en src/server/migrations/*.ts dentro del directorio del plugin. NocoBase ofrece el comando create-migration para generar rápidamente archivos de migración.
Parámetros Opcionales
| Parámetro | Descripción |
|---|---|
--pkg <pkg> | Especifica el nombre del paquete del plugin |
--on [on] | Especifica el momento de ejecución, opciones: beforeLoad, afterSync, afterLoad |
Ejemplo
La ruta del archivo de migración generado es la siguiente:
Contenido inicial del archivo:
⚠️
appVersionse utiliza para identificar la versión a la que se dirige la actualización. Los entornos con versiones anteriores a la especificada ejecutarán esta migración.
En los archivos de migración, puede acceder a las siguientes propiedades y API comunes a través de this para operar cómodamente con la base de datos, los plugins y las instancias de la aplicación:
Propiedades Comunes
this.app
Instancia actual de la aplicación NocoBase. Se puede utilizar para acceder a servicios globales, plugins o configuraciones.
this.db
Instancia del servicio de base de datos, proporciona interfaces para operar con modelos (colecciones).
this.plugin
Instancia del plugin actual, se puede utilizar para acceder a los métodos personalizados del plugin.
this.sequelize
Instancia de Sequelize, puede ejecutar directamente SQL nativo u operaciones de transacción.
this.queryInterface
QueryInterface de Sequelize, comúnmente utilizada para modificar estructuras de tablas, como añadir campos, eliminar tablas, etc.
Ejemplo de Escritura de Migración
Además de las propiedades comunes mencionadas anteriormente, la Migración también ofrece una amplia gama de API. Para obtener documentación detallada, consulte la API de Migración.
La ejecución de las migraciones se activa mediante el comando nocobase upgrade:
Durante la actualización, el sistema determinará el orden de ejecución basándose en el tipo de migración y appVersion.
En el desarrollo de plugins, se recomienda utilizar un Mock Server para probar si la migración se ejecuta correctamente, evitando así dañar los datos reales.
Tip: Usar un Mock Server le permite simular rápidamente escenarios de actualización y verificar el orden de ejecución de las migraciones y los cambios en los datos.
beforeLoad, afterSync o afterLoad según los objetos de la operación para evitar depender de módulos no cargados.appVersion para especificar claramente la versión a la que se aplica la migración y evitar ejecuciones repetidas.