使用 TypeORM

2020-07-22  本文已影响0人  littleyu

特性

启动数据库 postgresql

新版 docker(额外)

启动 PostgreSQL

验证 pg

进入 docker 容器

进入 pg 命令行

一些简单的命令

创建数据库

用 SQL 来创建数据库

安装 TypeORM

运行 TypeORM

吐槽

安装 babel

// index.ts
import "reflect-metadata";
import {createConnection} from 'typeorm';

createConnection().then(async connection => {
  console.log(connection)
  await connection.close()
}).catch(error => console.log(error));

此时项目运行流程

重要配置:禁用 sync

ormconfig

看起来很方便,为什么要禁用

创建表

posts表

"cli": {
  "migrationsDir": "src/migration"
}
import {MigrationInterface, QueryRunner, Table} from 'typeorm';

export class CreatePosts1595341120888 implements MigrationInterface {

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.createTable(new Table({
            name: 'posts',
            columns: [
                {name: 'id', isGenerated: true, type: 'int', isPrimary: true, generationStrategy: "increment"},
                {name: 'title', type: 'varchar'},
                {name: 'content', type: 'text'},
                {name: 'author_id', type:'int'}
            ]
        }))
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.dropTable('posts')
    }

}

  "entities": [
    "dist/entity/**/*.js"
  ],
  "migrations": [
    "dist/migration/**/*.js"
  ],
  "subscribers": [
    "dist/subscriber/**/*.js"
  ],

每次都要运行 babel 不傻吗?

数据映射到实体

背景

"cli": {
  "entitiesDir": "src/entity",
}
import {Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn} from 'typeorm';

@Entity('posts')
export class Post {
  @PrimaryGeneratedColumn('increment')
  id: number;
  @Column('varchar')
  title: string;
  @Column('text')
  content: string;
  @Column('int')
  authorId: number;
  @CreateDateColumn()
  createdAt: Date;
  @UpdateDateColumn()
  updatedAt: Date;
}

{
  "presets": [
    "next/babel"
  ],
  "plugins": [
    [
      "@babel/plugin-proposal-decorators",
      {
        "legacy": true
      }
    ]
  ]
}

知识点

如何使用实体

EntityManager API

举例

封装思路

Repository API

举例

封装思路

特色

总结

migration 数据迁移

entity 实体

connection 连接

manager / repo

上一篇 下一篇

猜你喜欢

热点阅读