Sequelize ORM y Node.js: Historial de ejecución de datos

[vc_row el_class=”blog-info”][vc_column][vc_single_image source=”featured_image” img_size=”full” style=”vc_box_rounded”][vc_empty_space height=”40px”][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text el_class=”font-weight-bold”]

Node.js y Sequelize ORM: mantienen el historial de ejecución de datos de inicialización

Hola lectores, me gustaría compartir la implementación sobre el mantenimiento del historial de ejecución de datos semilla mientras se usa Sequelize ORM.

¿Por qué el historial de ejecución de datos de semillas? ¿Por qué no el historial de ejecución de la migración?

La respuesta a eso se cita en la documentación de Sequelize en la sección Running Seeds.

[/vc_column_text][vc_empty_space height=”40px”][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text]


 

El historial de ejecución de la sembradora no se almacena en ningún lugar, a diferencia de las migraciones, que utilizan la tabla  SequelizeMeta.

 

Usaremos lo siguiente en nuestro proyecto:

  • Node.js (14.17.6)
  • Marco expreso (4.17.1)
  • Sequelizar ORM (6.6.5)
  • Sequelizar CLI (6.2.0)
  • Base de datos PostgreSQL (14.1)

Es posible que no necesite todas las cosas mencionadas. Una tabla llamada Todos sería suficiente.

Una vez que estemos listos con una tabla Todos, navegue al archivo ./server/config/config.json y actualice las credenciales de la base de datos y agregue la propiedad seederStorage establecida en json.

Simplemente por conveniencia, limitamos la propiedad de seederStorage. Podemos usar seederStoragePath para almacenar el historial de ejecución de datos semilla en un archivo json o usar seederStorageTableName para almacenar el historial de ejecución de datos semilla en una tabla de base de datos.

Luego crea un archivo semilla usando el siguiente comando en la terminal:

sequelize seed:generate --name create-a-todo

Y actualice el siguiente bloque de código:

module.exports = {  up: async (queryInterface, Sequelize) => {    await queryInterface.bulkInsert('Todos', [      {        title: 'Create a blog',        createdAt: new Date(),        updatedAt: new Date()     }    ]);  },  down: async (queryInterface, Sequelize) => {    await queryInterface.bulkDelete('Todos', null);  }};

Ahora para ejecutar la sembradora, escriba en la terminal como:

sequelize db:seed:all

Esto ejecutará la sembradora para crear un registro en la tabla Todos y se generará automáticamente un nuevo archivo llamado sequelize-data.json en la raíz del proyecto para realizar un seguimiento de todo el historial de ejecución de las sembradoras.

sequelize orm
Historial de ejecución de datos semilla generado automáticamente

Si intentamos ejecutar la sembradora nuevamente, se mostrará como sigue:

 

No seeders found.

 


¡Gracias por leer!

[/vc_column_text][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_class=”social-info”][vc_column width=”1/6″][/vc_column][vc_column width=”2/3″][vc_row_inner][vc_column_inner width=”1/2″][vc_column_text][social_share_button themes=’theme1′][/vc_column_text][/vc_column_inner][vc_column_inner el_class=”youtube-inner-col” width=”1/2″][vc_column_text][likebtn theme=”youtube” lang=”auto” show_like_label=”0″ white_label=”1″ alignment=”right”][/vc_column_text][/vc_column_inner][/vc_row_inner][vc_row_inner el_class=”social-info-inner”][vc_column_inner width=”1/4″][vc_single_image image=”921″][/vc_column_inner][vc_column_inner width=”3/4″][vc_column_text]

Diego Pacheco

Ingeniero en Sitemas, MBA (Babson College). Desarrollador PHP/Java/JavaScript. Fundador & CEO de EpicStudio. Entusiasta de las tecnologías web (JavaScript, Vue, Laravel, AWS, Docker) Viajes, Negocios, Surf y Growth.[/vc_column_text][asvc_list_item icon_fontawesome=”fa fa-calendar-o” icon_size=”14px”]Programar una reunión[/asvc_list_item][/vc_column_inner][/vc_row_inner][/vc_column][vc_column width=”1/6″][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]

Recent Post

[/vc_column_text][lvca_posts_carousel posts_query=”size:3|order_by:rand|post_type:post” image_linkable=”true” image_size=”full” taxonomy_chosen=”post_tag” display_title=”true” display_post_date=”true” display_summary=”true” autoplay_speed=”3000″ animation_speed=”300″ display_columns=”3″ scroll_columns=”3″ gutter=”3″ tablet_display_columns=”2″ tablet_scroll_columns=”2″ tablet_gutter=”3″ tablet_width=”800″ mobile_display_columns=”1″ mobile_scroll_columns=”1″ mobile_gutter=”3″ mobile_width=”480″][vc_empty_space height=”20px”][/vc_column][/vc_row]