在nestjs中进行typeorm cli迁移(migration)的配置
在nestjs中进行typeorm cli迁移(migration)的配置
在学习nestjs过程中发现typeorm的迁移配置十分麻烦,似乎许多方法都是旧版本的配置,无法直接使用. 花了挺长时间总算解决了这个配置问题.
db.config.ts
先创建db.config.ts, 该文件export了两个对象,其中一个对象(ormConfig)用于 nestjs 使用,另一个对象(ormConfigForCli)给 typeormcli 使用。
两个对象基本配置相同,主要是查询的entities文件不同
- ormConfig去,dist文件夹下查找entity, 因为nestjs最终运行的是打包好的entity.js文件
- 而ormConfigForCli则可以直接运行编写好的文件, 因此会在源代码中查找entity.ts文件
import { DataSource, DataSourceOptions } from 'typeorm';// 基础配置
const baseConfig: DataSourceOptions = {type: 'mysql',host: 'localhost',port: 3306,username: 'root',password: '123456',database: 'test',
};// 该对象用于 nestjs typeorm 初始化
export const ormConfig: DataSourceOptions = {...baseConfig,entities: ['dist/**/entities/*.entity{.js,.ts}'],
};// 该对象 typeorm cli 迁移时使用
const ormConfigForCli: DataSourceOptions = {...baseConfig,entities: ['src/**/entities/*.entity{.js,.ts}'],migrations: ['migrations/*{.js,.ts}'], // migration:run时查找的文件夹subscribers: ['subscribers/*{.js,.ts}'],logger: 'file',logging: true,
};// 实例化dataSource,用以之后cli使用
const dataSource = new DataSource(ormConfigForCli);// 此处的dataSource需要 export default才可以使用
export default dataSource;
nestjs中配置
类似官方文档中的方式, 直接作为forRoot的参数即可. 文档
app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ormConfig } from './config/db.config';@Module({imports: [TypeOrmModule.forRoot(ormConfig)],
})
export class AppModule {}
package.json配置
首先需要在package.json配置脚本
"scripts": {// ...// 此处 -d 表示 -dataSource, 也就是db.config.ts中export的dataSource"typeorm": "typeorm-ts-node-esm -d ./src/config/db.config.ts","migration:generate": "npm run typeorm -- migration:generate","migration:run": "npm run typeorm -- migration:run","migration:revert": "npm run typeorm -- migration:revert"},
需要注意的是,新版本typeorm对于commonjs和esm有两个不同的命令,本文中使用的是esm,所以使用typeorm-ts-node-esm, commonjs可以使用typeorm-ts-node-commonjs,具体可查看文档
使用脚本进行迁移
配置完毕后,就可以使用命令行了. 该命令会将迁移的文件输出至根目录的migrations文件夹下, 并生成 <时间戳>-alert-users-table.ts 迁移文件.
npm run migration:generate .\migrations\alert-users-table
需要注意的是,migration:generate的path为必须参数, 若是忘记添加会报错:缺少 non-option 参数:传入了 0 个, 至少需要 1 个
通过migration:run命令就可以执行此次迁移了, 迁移命令是根据之前db.config.ts中的migrations选项查找迁移文件的
npm run migration:run
通过migration:revert可以撤销迁移
npm run migration:revert
文件层级结构
├─dist
├─src
│├─config
││└─db.config.ts
│├─app.modules.ts
└─migrations
│└─ 1670661241977-alert-users-table.ts
最后
为大家准备了一个前端资料包。包含54本,2.57G的前端相关电子书,《前端面试宝典(附答案和解析)》,难点、重点知识视频教程(全套)。



有需要的小伙伴,可以点击下方卡片领取,无偿分享
相关文章:
在nestjs中进行typeorm cli迁移(migration)的配置
在nestjs中进行typeorm cli迁移(migration)的配置 在学习nestjs过程中发现typeorm的迁移配置十分麻烦,似乎许多方法都是旧版本的配置,无法直接使用. 花了挺长时间总算解决了这个配置问题. db.config.ts 先创建db.config.ts, 该文件export了两个对象,其…...
前端工程构建问题汇总
1.less less-loader安装失败问题 npm install less-loader --save --legacy-peer-deps 加上–legacy-peer-deps就可以了 在NPM v7中,现在默认安装peerDependencies,这会导致版本冲突,从而中断安装过程。 –legacy-peer-deps标志是在v7中引…...
某马程序员NodeJS速学笔记
文章目录前言一、什么是Node.js?二、fs文件系统模块三、Http模块四、模块化五、开发属于自己的包模块加载机制六、Express1.初识ExpressGET/POSTnodemon2.路由模块化3.中间件中间件分类自定义中间件4. 跨域问题七、Mysql模块安装与配置基本使用Web开发模式Session认证JWT八、m…...
SpringMVC DispatcherServlet源码(6) 完结 静态资源原理
阅读源码,分析静态资源处理器相关组件: 使用SimpleUrlHandlerMapping管理url -> 处理器映射关系spring mvc使用WebMvcConfigurationSupport注入SimpleUrlHandlerMapping组件DelegatingWebMvcConfiguration可以使用WebMvcConfigurer的配置静态资源url…...
2023年全国最新会计专业技术资格精选真题及答案9
百分百题库提供会计专业技术资格考试试题、会计考试预测题、会计专业技术资格考试真题、会计证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 四、材料题 1.某企业为增值税一般纳税人,2019年12月初“应付职工薪酬…...
Web3中文|把Web3装进口袋,Solana手机Saga有何魔力?
2月23日,Solana Web3手机Saga发布新的消息,将推出NFT铸造应用程序Minty Fresh。在Minty Fresh,用户仅需轻点并完成拍摄,就可以直接在手机中进行NFT铸造,并在几秒钟内将其转换为链上NFT,NFT还可以发布在 Ins…...
【配电网优化】基于串行和并行ADMM算法的配电网优化研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
数据结构初阶 -- 顺序表
数据结构初阶 链表的讲解 目录 一. 线性表 1.1 定义 1.2 特点 二. 顺序表 2.1 定义 2.2 代码 2.3 功能需求 2.4 静态顺序表的特点以及缺点 2.5 动态的顺序表 2.6 动态顺序表接口的实现 三. 代码 头文件 主文件 一. 线性表 1.1 定义 线性表(linear li…...
uniapp:3分钟搞定在线推送uni.createPushMessage,uni.onPushMessage
安卓端 在线推送功能演示: 1、dcloud后台申请开通uniPush dcloud后台 (1):找到我的应用 (2):点进去后,各平台信息,点击新增 (3):填…...
C/C++开发,无可避免的多线程(篇一).跨平台并行编程姗姗来迟
一、编译环境准备 在正式进入c/c多线程编程系列之前,先来搭建支持多线程编译的编译环境。 1.1 MinGW(win) 进入Downloads - MinGW-w64下载页面,选择MinGW-w64-builds跳转下载, 再次进行跳转: 然后进入下载页…...
如何把照片的底色修改为想要的颜色
如何给照片更换底色?其实有可以一键给照片更换底色的 APP ,但是几乎都要收费。如果想要免费的给照片更换底色的话,分享两种简单便捷的方法给你。掌握了这项技能,以后就不用店花钱处理啦!1、免费!线上快速 给…...
【高效办公】批量生成固定模板的文件夹名称
老师让你按照他的要求生成每位学生的文件夹,你是学委,让你马上完成该任务,但你又不想是手动一个一个码字,因此聪明的你就看到了本篇文章啦!!! 虽说一个人懒惰,并不是好的事情。 但这个似乎合情合理啊~ 然后,就动手想办法,一开始就真的打算码字了。。 思路 在实际开…...
redis的集群方式
1.主从复制 主从复制原理: 从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 主服务器BGSAVE执行完后,向所有从服务…...
温控负荷的需求响应潜力评估及其协同优化管理研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
模电学习9. MOS管使用入门
模电学习9. MOS管使用入门一、mos管理简介1. 简介2. mos管理的特点3. MOS管的工作状态(1)放大功能(2)截止区(3)饱和区3. Mos管的分类(1)按照工作模式分类:(2&…...
【算法】【数组与矩阵模块】正数组中累加和为给定值的最长子数组长度,空间复杂度O(1)解法
目录前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本思考感悟写在最后前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介绍 …...
3.1.2 创建表
文章目录1.创建表2.表创建基础3.表的主键4.使用null值5.使用AUTO_INCREMENT6.指定默认值7. 字段备注8.引擎类型9.外键1.创建表 表的创建一般有俩种方式,一种是使用交互式创建和管理表的工具,比如我们安装的MariaDB,另一种是使用MySQL 语句进…...
使用netlify实现自动化部署前端项目(无服务器版本)
介绍 本文以 github仓库进行介绍关联netlify的无服务前端自动化部署。用途:个人网站设计、小游戏等当然这只是让你入门~具体细节等待你自己去探索 实现 打开官方网站 如果没有注册过的账户,你需要使用 github 去进行登录。注册完成后会自动给你提示填…...
MATLAB点云数据处理(二十九):可视化点云之pcshow参数详解与快捷键操作
文章目录 1 pcshow简述2 最简单的pcshow3 带参数的pcshow3.1 点大小参数----MakerSize3.2 背景色参数----Background3.3 指定竖直轴参数----VerticalAxis3.4 指定垂直轴方向参数----VerticalAxisDir3.5 投影参数----Projection3.6 指定可视化平面参数----ViewPlane3.7 颜色渲染…...
顺序表——重置版
本期我们来实现数据结构的顺序表(这个之前写过一次,不过本期和之前可能会略有不同,但大体相同),大家可以看一下我们之前完成的顺序表 (6条消息) 顺序表及其多种接口的实现_顺序表类中实现接口方法_KLZUQ的博客-CSDN博客…...
RustFS实战:5分钟在Linux服务器上搭个私有S3兼容存储(保姆级配置+避坑指南)
RustFS实战:5分钟在Linux服务器上搭个私有S3兼容存储(保姆级配置避坑指南) 最近在折腾一个需要私有文件存储的Side Project,既不想用公有云S3(太贵),又嫌MinIO配置繁琐。偶然发现RustFS这个基于…...
Offline-First数据同步策略:解决网络中断的智能方案
Offline-First数据同步策略:解决网络中断的智能方案 【免费下载链接】offline-first :electric_plug: Everything you need to know to create offline-first web apps. 项目地址: https://gitcode.com/gh_mirrors/of/offline-first 在当今移动优先的时代&am…...
大模型进阶必看:Agent Skills如何让AI开发更标准化、可复用?速收藏!
随着AI应用开发成熟,工具调用经历了Function Calling、MCP协议到Agent Skills三个阶段。Agent Skills通过文件系统原生设计,将指令、工作流和资源打包成可复用模块,革新上下文管理,实现代码即工具,摆脱供应商锁定。它使…...
前端未来趋势:别再用老掉牙的技术了
前端未来趋势:别再用老掉牙的技术了 各位前端同行,咱们今天聊聊前端未来趋势。别告诉我你还在使用老掉牙的技术,那感觉就像在使用诺基亚手机。 为什么你需要关注前端未来趋势 最近看到一个项目,还在使用 jQuery,我差点…...
Qwerty Learner 数据持久化架构深度解析:IndexedDB 异步存储方案技术实现
Qwerty Learner 数据持久化架构深度解析:IndexedDB 异步存储方案技术实现 【免费下载链接】qwerty-learner 项目地址: https://gitcode.com/GitHub_Trending/qw/qwerty-learner 在英语单词记忆与打字训练应用中,数据持久化架构直接影响学习体验的…...
基于Matlab的11种图像清晰度评价指标:直接可运行,联系我
基于matlab图像清晰度评价指标。 一共11种。 程序已调通,可直接运行。 需要直接联系。 基于matlab图像清晰度评价指标。 一共11种。 程序已调通,可直接运行。 需要直接联系。 图像剃度的清晰度评价(EOG, Roberts, Tenengrad, Brenner,Variance, Laplace,…...
STM32家庭健康检测仪设计与实现
基于STM32的家庭健康检测仪设计与实现1. 项目概述1.1 系统架构本家庭健康检测仪采用模块化设计架构,以STM32F103RCT6为主控芯片,集成多种生物传感器实现体温、心率和血氧检测功能。系统硬件架构如下图所示:[主控芯片] ←→ [传感器模块] ←→…...
Nano Banana API 来了:不到半价享官方同款品质,仅需约 ¥0.10/张!
最近被谷歌新发布的 Nano Banana(Gemini 2.5 Flash Image)图像生成模型 霸屏了。 从手办秒变真人级 Cosplay,到一键统一多图风格,从个性化头像到产品概念设计,甚至连静态画作都能一键生成电影级动态分镜——这波 AI 生…...
nanomsg性能基准测试终极指南:不同消息大小下的吞吐量对比分析
nanomsg性能基准测试终极指南:不同消息大小下的吞吐量对比分析 【免费下载链接】nanomsg nanomsg library 项目地址: https://gitcode.com/gh_mirrors/na/nanomsg nanomsg是一个轻量级、高性能的消息传递库,专为解决常见的通信模式而设计。作为na…...
利用快马平台快速构建mcporter数据转换工具原型,十分钟验证数据管道设计
最近在做一个数据迁移项目时,遇到了需要频繁转换数据格式的需求。传统方式下,光是搭建开发环境、编写基础代码就要花上大半天时间。这次尝试用InsCode(快马)平台快速构建了一个mcporter数据转换工具原型,整个过程出乎意料地顺畅。 明确核心需…...
