首页 > 解决方案 > TypeORM 如何播种数据库

问题描述

我正在使用 typeorm ORM 运行我的 Node JS 后端。

来自实体框架,很容易用几行来为数据库播种,例如

Database.SetInitializer(new DbInitializer()); 

DbInitializer 类将包含所有种子信息。

是否有类似的方法在 TypeOrm 中为数据库播种?如果没有,推荐的方法是什么?

1) 使用数据插入语句创建新迁移?2)创建一个实例化和保存实体的任务?

标签: typeorm

解决方案


不幸的是, TypeORM没有正式发布的解决方案(在发布此答案时)。

但是我们可以使用一个很好的解决方法:

  1. 在文件中创建另一个连接ormconfig.js并为“迁移”指定另一个文件夹 - 实际上是我们的种子
  2. 生成并运行你的种子-c <connection name>。就是这样!

示例ormconfig.js

module.exports = [
  {
    ...,
    migrations: [
      'src/migrations/*.ts'
    ],
    cli: {
      migrationsDir: 'src/migrations',
    }
  },
  {
    name: 'seed',
    ...,
    migrations: [
      'src/seeds/*.ts'
    ],
    cli: {
      migrationsDir: 'src/seeds',
    }
  }
]

示例package.json

{
  ...
  scripts: {
    "seed:generate": "ts-node typeorm migration:generate -c seed -n ",
    "seed:run": "ts-node typeorm migration:run -c seed",
    "seed:revert": "ts-node typeorm migration:revert -c seed",
  },
  ...
}

推荐阅读