typeorm - TypeORM 如何播种数据库
问题描述
我正在使用 typeorm ORM 运行我的 Node JS 后端。
来自实体框架,很容易用几行来为数据库播种,例如
Database.SetInitializer(new DbInitializer());
DbInitializer 类将包含所有种子信息。
是否有类似的方法在 TypeOrm 中为数据库播种?如果没有,推荐的方法是什么?
1) 使用数据插入语句创建新迁移?2)创建一个实例化和保存实体的任务?
解决方案
不幸的是, TypeORM没有正式发布的解决方案(在发布此答案时)。
但是我们可以使用一个很好的解决方法:
- 在文件中创建另一个连接
ormconfig.js
并为“迁移”指定另一个文件夹 - 实际上是我们的种子 - 生成并运行你的种子
-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",
},
...
}
推荐阅读
- python - python索引的含义。例如 t[...,0]
- azure - 访问 MS Azure 数据目录
- javascript - 为什么 if else 语句与 else if 语句的工作方式不同?
- mongodb - 在 $cond mongoDB 中使用表达式 $eq
- c# - 如何在 Windows 窗体上动态绘制图像?
- kubernetes - 如何将 GKE 的集群自动扩缩器日志导出到外部日志服务?
- javascript - 如何在Javascript中保持复选框的状态
- sql - SQL - 从连接两个表中获得结果的最快算法
- animation - FFmpeg:如何为每张视频幻灯片使用多个图像,并且动画/放大/缩小/淡化每个图像只有一个?
- ios - 如何执行 LinkingObject 的迁移?