数据库迁移工具-种子文件

种子文件概述

  • Sequelize-Cli 中的种子文件是专门用于编写测试数据的
  • 我们知道在 Sequelize-Cli 中不同的阶段会创建不同的数据库
  • 但是刚创建出来的数据库是没有数据的, 所以为了方便我们在不同的阶段演示和调试
  • 我们可以在种子文件中提前编写测试数据, 以便于我们在不同的阶段中使用

创建种子文件

npx sequelize seed:generate --name xxx

image-20220201184530929

编写内容如下:

'use strict';

module.exports = {
    up: (queryInterface, Sequelize) => {
        return queryInterface.bulkInsert('Users', [
            {
                name: 'John Doe',
                createdAt: new Date(),
                updatedAt: new Date(),
            },
            {
                name: 'BNTang',
                createdAt: new Date(),
                updatedAt: new Date(),
            },
            {
                name: 'Jonathan_Lee',
                createdAt: new Date(),
                updatedAt: new Date(),
            },
        ], {});
    },
    down: (queryInterface, Sequelize) => {
    }
};

执行种子文件

执行指定文件:

npx sequelize db:seed --seed=[fileName, ...]

image-20220201185416061

数据库当中的体现如下:

image-20220201185612217

执行所有种子文件:

npx sequelize db:seed:all

image-20220201185850573

注意点:执行种子文件是不会保存到 sequelize 的操作表当中进行保存的,如果你想要你执行的种子文件操作保存到 sequelize 的操作表当中的话还需要进行额外的配置才可以实现,官方文档地址:https://sequelize.org/v5/manual/migrations.html#seed-storage

image-20220201191315166

记录种子文件操作记录

image-20220201191449391

在 Navicat 当中将之前创建好的数据库删除,然后在重新进行创建如下:

npx sequelize db:create
npx sequelize db:migrate

再次执行种子文件:

'use strict';

module.exports = {
    up: (queryInterface, Sequelize) => {
        return queryInterface.bulkInsert('Users', [
            {
                name: 'John Doe',
                createdAt: new Date(),
                updatedAt: new Date(),
                age: 18
            },
            {
                name: 'BNTang',
                createdAt: new Date(),
                updatedAt: new Date(),
                age: 18
            },
            {
                name: 'Jonathan_Lee',
                createdAt: new Date(),
                updatedAt: new Date(),
                age: 18
            },
        ], {});
    },
    down: (queryInterface, Sequelize) => {
    }
};
npx sequelize db:seed --seed=20220201104452-user.js

数据库当中的体现如下:

image-20220201192516878

回退到某个时刻

回退到指定种子操作:

npx sequelize db:seed:undo --seed=[fileName, ...]

修改种子文件,编写当中的 down 方法当中的内容进行回退操作,其实回退就是执行 down 当中的操作内容:

return queryInterface.bulkDelete('Users', null, {});

image-20220201193305797

npx sequelize db:seed:undo --seed=20220201104452-user.js

image-20220201194604133

npx sequelize db:seed:undo:all

回退所有:

image-20220201202509028

posted @   BNTang  阅读(126)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2021-02-01 Intellij IDEA
点击右上角即可分享
微信分享提示