哪种粒度更适合迁移

  • 本文关键字:迁移 粒度 knex.js
  • 更新时间 :
  • 英文 :


这是我的案例:

有几个表:usersaddressescommentsposts

我的困惑是什么样的粒度更适合迁移?

我可以将所有DDL放在一个迁移文件和一个种子文件中,如下所示:

迁移:

npx knex migrate:make create_all_tables

种子:

npx knex seed:make all_tables

或者,将它们分开,为每个表创建迁移文件和种子文件?

迁移:

npx knex migrate:make create_users

npx knex migrate:make create_addresses

npx knex migrate:make create_posts

npx knex migrate:make create_comments

种子:

npx knex seed:make users

npx knex seed:make addresses

npx knex seed:make comments

npx knex seed:make posts

有什么想法吗?谢谢

只需在一个迁移文件中创建所有表,除非您有一些特定的用例,为什么要将这些创建分离为单独的文件。您希望尽量减少迁移文件的数量。

通常,您稍后会为每个pull请求添加一个迁移文件,为应用程序添加新功能(以防架构发生任何更改)。一旦创建了迁移,以后就不应该修改它,除非您仍处于初始实现阶段,并且还没有任何服务器运行生产数据库。

对于种子,我通常建议使用单个种子命令来实现完整数据集的粒度,这会为测试添加一些有用的初始数据集(我实际上根本不会使用种子文件,但我只会编写一些API,测试框架使用这些API来在截断所有表后轻松地向DB添加一些初始数据)。

PS。我经常看到的另一种反模式是通过回滚模式来清理测试数据库,然后再次运行迁移。您应该在测试套件启动时初始化数据库并运行迁移一次,然后在测试之间截断所有表和id序列,然后用初始数据集再次填充DB。

相关内容

  • 没有找到相关文章

最新更新