typeorm 修改事务_typeORM实践

ORM (Object Relation Model)

ORM 把数据库映射成对象。

数据库的表(table) --> 类(class)

记录(record,行数据)--> 对象(object)

字段(field)--> 对象的属性(attribute)复制代码

typeORM默认支持Typescript,支持关联,支持事务,支持数据库迁移。

启动PostgreSQL

自行安装docker哦

docker run -v "blog-data":/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=blog -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:12.2

docker exec -it 容器id bash//进入容器

psql -U blog -W//没有设置密码直接回车进入

pg命令

\l 查看数据库

\c 连接数据库

\dt 进入表

复制代码

创建数据库

用SQL来创建数据库,因为TypeORM没有单纯提供创建数据库的API

我们需要创建三个数据库:开发(develpoment)、测试(test)、生产(production)

//命令

CREATE DATABASE DataBaseName ENCODING 'UTF8' LC_COLLATE 'en_US.utf8' LC_CTYPE 'en_US.utf8';

复制代码

安装TypeORM

项目中安装以下依赖

yarn add typeorm

yarn add reflect-metadata

yarn add @types/node

yarn add pg

复制代码

配置tsconfig

"emitDecoratorMetadata": true,

"experimentalDecorators": true,

复制代码

运行typeORM

记得先git add

./node_modules/.bin/typeorm init --database postgres

git checkout HEAD -- .gitignore//恢复gitignore的内容,因为init会覆盖

git checkout HEAD -- package.json//恢复package的内容

git checkout HEAD -- tsconfig.json//恢复package的内容

复制代码

以next.js为例,部分框架内置了babel来将TS编译为JS,TypeORM推荐使用ts-node 来编译,这两者对TS的支持并非完全一致,所以我们要进行统一(全部使用babel),其它的框架可以查找对应的解决方式。

//新建.babelrc 配置如下

//要安装插件哦

{

"presets": [

"next/babel"

],

"plugins": [

[

"@babel/plugin-proposal-decorators",

{

"legacy": true

}

]

]

}

复制代码

运行 npx babel ./src --out-dir dist --extensions ".ts,.tsx" 编译

可能会遇到报错,自己根据报错调整配置文件!可对比源码查看

node dist/index.js

ormconfig.json修改配置

"synchronize": false,如果为true,那么在链接数据库时,typeorm会自动根据entity目录来修改数据表,看起来很方便,但该功能可能会在我们修改User的时候造成数据丢失。

复制代码

windows同时运行两个任务npm run tasks in parallel

yarn add --dev concurrently

package.json 配置scripts格式("concurrently \"task 1\" \"task 2\"")

"dev": "concurrently \"next dev\" \"babel -W ./src --out-dir dist --extensions .ts,.tsx\"",//例子

复制代码

创建表

npx typeorm migration:create -n CreatePost

//在migration目录中会生成一个接口文件

复制代码

数据映射到实体

以上大多是配置,只是在数据库中创建了Post,下面将数据映射到Entity

typerom entity:create -n Post

复制代码

。。。。。未完待續

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值