Nest 怎么自动创建表到数据库

import { Module } from '@nestjs/common';  
import { TypeOrmModule } from '@nestjs/typeorm';  
import { APP_FILTER } from '@nestjs/core';  
  
@Module({  
  imports: [  
    TypeOrmModule.forRoot({  
      type: 'mysql',  
      host: 'localhost',  
      port: 3306,  
      username: 'test',  
      password: 'test',  
      database: 'test',  
      entities: [__dirname + '/**/*.entity{.ts,.js}'], // 扫描实体文件  
      synchronize: true, // 设置为 true 以自动同步数据库结构到你的数据库中  
    }),  
  ],  
  providers: [  
    {  
      provide: APP_FILTER,  
      useClass: YourAppFilter, // 你的过滤器,如果不需要可以忽略这一行  
    },  
  ],  
})  
export class AppModule {}

重点:synchronize: true, // 设置为 true 以自动同步数据库结构到你的数据库中  

类名useraa.ts

  import {

    Column,

    CreateDateColumn,

    Entity,

    PrimaryGeneratedColumn,

    Unique,

    UpdateDateColumn,

  } from 'typeorm';

  /** ユーザアプリアカウント */

  @Entity({ name: 'useraa' })

  @Unique(['ddd'])

  export class Useraa {

    /** アプリアカウントマスタID */

    @PrimaryGeneratedColumn()

    id!: number;

    @Column({

      name: 'ddd',

      comment: 'ddd',

    })

    ddd!: string;

    @CreateDateColumn({

      name: 'create_date',

      comment: '作成日時',

      type: 'timestamp with time zone',

    })

    createDate!: Date;

    @UpdateDateColumn({

      name: 'update_date',

      comment: '更新日時',

      type: 'timestamp with time zone',

      nullable: true,

    })

    updateDate!: Date | null;

  }

自动创建表

1.确保自己的字段没错

2.确保自己的数据库连接没问题

3.synchronize: true, // 设置为 true 以自动同步数据库结构到你的数据库中

(这个设置的就是true。应该是vscode没自动编译 所以重启后编译了)

4.vscode不用关闭重新启动,但是run start必须重启

否则创建不成功 

  1. 运行应用程序:
    当你运行应用程序时,TypeORM 将自动检查你的实体定义,并在数据库中创建相应的表。确保你的数据库驱动程序与 TypeORM 兼容,并且你已经正确配置了数据库连接。
  2. 注意事项:
  • 在生产环境中,建议关闭 synchronize,因为它可能会导致数据丢失。在开发环境中,它可以为你提供方便,但始终确保备份你的数据。
  • 根据你的数据库设置和配置,可能需要调整连接设置和其他相关配置。始终参考 TypeORM 的官方文档以获取最新和详细的设置选项。

也可以用另一种方法创建到数据库

自定义迁移:
如果你需要更多的控制权,可以使用迁移来手动更改数据库结构。

你可以使用 typeorm-migrations 包来创建和运行迁移。这允许你编写脚本,以更细粒度地控制数据库结构的变化。

重点

1.需要配置typeorm 

2.创建migration.ts文件夹

会自动生成文件

3.运行创建命令(具体自己百度)

希望对你有帮助

记得点赞啊 谢谢!

  • 38
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一些关于如何使用NestJS连接数据库并创建3张表的指导。 首先,你需要安装 `TypeORM` 和 `@nestjs/typeorm` 这两个npm包,用于连接数据库和实现ORM。 接下来,在你的 `app.module.ts` 文件,你需要导入 `TypeOrmModule` 并设置连接数据库的配置。例如: ``` import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from './users/user.entity'; import { Post } from './posts/post.entity'; import { Comment } from './comments/comment.entity'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'database_name', entities: [User, Post, Comment], synchronize: true, }), ], }) export class AppModule {} ``` 在上面的示例,我们使用了 `mysql` 数据库,并设置了相关的连接信息。同时,我们还导入了 `User`、`Post` 和 `Comment` 这三个实体,这样 `TypeOrmModule` 就可以根据这些实体创建对应的表。 接下来,我们需要创建这三个实体所对应的类。例如,`User` 实体类的定义如下: ``` import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @Column() email: string; @Column() password: string; } ``` 在上面的示例,我们使用了 `@Entity` 装饰器来标识这是一个实体类,使用 `@Column` 装饰器标识每个属性对应的数据库列。同时,我们还使用了 `@PrimaryGeneratedColumn` 装饰器来标识 `id` 属性为主键。 最后,我们需要在需要使用这些实体的模块导入它们,并使用 `TypeOrmModule.forFeature` 方法将它们注入到模块。例如: ``` import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { UsersController } from './users.controller'; import { UsersService } from './users.service'; import { User } from './user.entity'; @Module({ imports: [TypeOrmModule.forFeature([User])], controllers: [UsersController], providers: [UsersService], }) export class UsersModule {} ``` 在上面的示例,我们导入了 `User` 实体,并使用 `TypeOrmModule.forFeature` 方法将它注入到模块。这样,我们就可以在 `UsersService` 和 `UsersController` 使用 `User` 实体了。 通过以上步骤,我们就可以使用 NestJS 连接数据库并创建3张表了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值