NestJs - typeorm 详细配置步骤

874 阅读1分钟
  1. npm install

    npm install --save typeorm mysql2
    
  2. 编辑app.module.ts

    import { TypeOrmModule } from '@nestjs/typeorm';
    @Module({
      imports: [
        TypeOrmModule.forRoot({
          type: 'mysql',
          host: '127.0.0.1',
          port: 3306,
          username: 'root',
          password: 'root',
          database: 'database',
          autoLoadEntities: true,
          synchronize: true,
        }),
        AdminModule,
      ],
      controllers: [AppController],
      providers: [AppService],
    })
    
  3. 创建对应文件的实体,如:admin.entity.ts

    import { Entity, PrimaryGeneratedColumn, Column, Unique } from 'typeorm';
    
    @Entity('admin')
    @Unique(['username'])
    export class Admin {
        @PrimaryGeneratedColumn({ unsigned: true })
        id: number;
        
        @Column({ length: 20, default: '' })
        username: string;
    }
    
  4. 编辑对应文件的module,如:admin.module.ts

    import { TypeOrmModule } from '@nestjs/typeorm';
    import {Admin} from './entities/admin.entity';
    
    @Module({
      imports: [TypeOrmModule.forFeature([Admin]), AuthModule],
    })
    
  5. 编辑对应文件的service,如:admin.service.ts

    import { InjectRepository } from '@nestjs/typeorm';
    import { Repository } from 'typeorm';
    import { Admin } from './entities/admin.entity';
    
    @Injectable()
    export class AdminService {
      constructor(
        @InjectRepository(Admin) private adminRepository: Repository<Admin>,
      ) {}
      
    findOne(query: { id?: number; mobile?: string; email?: string }) {
        const {id, mobile, email} = query;
        return this.adminRepository.findOne({
          where: [{id}, {mobile}, {email}]
        })
      }
    }