Nestjs中使用TypeORM操作Mysql数据库

Nestjs中操作mysql数据库可以使用Nodejs封装的DB库,也可以使用TypeORM。下面我们主要给大家讲讲在Nestjs中使用TypeORM操作mysql数据库

一、关于TypeORM

TypeORM是一个ORM框架,是一款比较成熟的对象关系映射器,它是由typescript写的。 支持 MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL等数据库。

二、安装TypeORM 操作Mysql模块

Nest 操作Mysql官方文档:https://docs.nestjs.com/techniques/database

npm install --save @nestjs/typeorm typeorm mysql

三、配置数据库连接地址

在app.module.ts中配置数据库连接

      import { Module } from '@nestjs/common';
      import { TypeOrmModule } from '@nestjs/typeorm';
      @Module({
        imports: [
          TypeOrmModule.forRoot({
            type: 'mysql',
            host: 'localhost',
            port: 3306,
            username: 'root',
            password: 'root',
            database: 'test',
            entities: [__dirname + '/**/*.entity{.ts,.js}'],
            synchronize: true,
          }),
        ],
      })
      export class AppModule {}
    

三、配置实体entity

      import { PrimaryGeneratedColumn, Column, Entity } from "typeorm";
      @Entity()
      export class Nav {
        @PrimaryGeneratedColumn()
        id: number;
      
        @Column({length: 45})
        name: string;
      
        @Column({length:255})
        url: string;
      
        @Column('int')
        status: number;
      }
    

四、在控制器对应的Module中配置Model


      import { Module } from '@nestjs/common';
      import { UserController } from './controller/user/user.controller';
      import { NewsController } from './controller/news/news.controller';
      
      import { TypeOrmModule } from '@nestjs/typeorm';
      
      import {Nav} from '../../entity/nav.entity';
      
      import {Navinfo} from '../../entity/navinfo.entity';
      
      import { AppService } from '../../app.service';
      
      @Module({
        imports:[TypeOrmModule.forFeature([Nav,Navinfo])],
        controllers: [UserController, NewsController],
        providers:[AppService]
      })
      export class AdminModule {}

    

五、在服务里面使用@InjectRepository获取数据库Model实现操作数据库

      import { Injectable } from '@nestjs/common';
      import { InjectRepository } from '@nestjs/typeorm';
      import { Repository } from 'typeorm';
      import {Nav} from './entity/nav.entity';
      import {Navinfo} from './entity/navinfo.entity';
      @Injectable()
      export class AppService {
        constructor(
          @InjectRepository(Nav) private readonly navRepository: Repository