当前位置:  开发笔记 > 前端 > 正文

TypeORM如何种子数据库

如何解决《TypeORM如何种子数据库》经验,为你挑选了2个好方法。

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

来自Entity Framework,很容易用几行代表db

Database.SetInitializer(new DbInitializer()); 

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

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

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



1> oleh.meleshk..:

不幸的是,没有正式发布的TypeORM解决方案(当时这个答案正在发布).

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

    ormconfig.js文件中创建另一个连接,并为"迁移"指定另一个文件夹 - 实际上是我们的种子

    生成并运行你的种子-c .而已!

示例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",
  },
  ...
}



2> Eliran Malka..:

我很想看到这样的功能,以及(和我们并不孤单),但在 那一刻,有播种没有官方的功能。

由于缺乏这种内置功能,我认为下一个最好的方法是创建一个名为的迁移脚本0-Seed(这样它就可以在您可能拥有的所有其他迁移脚本之前)并在其中填充种子数据。

@bitwit创建了一个片段,可能对您有用;此功能可从yaml文件读取数据,您可以将其合并到种子迁移脚本中。

但是,经过一些研究,我发现了另一种有趣的方法:将after_create事件绑定到表,并在侦听器中初始化数据。
我还没有实现它,所以我不确定可以直接用TypeORM完成它。

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有