使用nestjs和typeorm連接數據庫

引入typeorm 和 mysql

npm install @nestjs/typeorm typeorm mysql

創建Module cats

nest g mo cats
nest g co cats
nest g s cats

在AppModule裏引入TypeormModule

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Connection } from 'typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CatsModule } from './cats/cats.module';


@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'password',
      database: 'nest',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }),
    CatsModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {
  constructor (private readonly connection: Connection) {} 
}

配置cats類Module

Typeorm可以利用entity的實例,自動生成數據庫表單。
cats.entity.ts

import{ PrimaryGeneratedColumn, Column, Entity } from "typeorm";
import { ColumnMetadata } from "typeorm/metadata/ColumnMetadata";

@Entity()
export class Cats {
    @PrimaryGeneratedColumn() 
    id: number;
    
    @Column({length: 45})
    name: string;

    @Column('int')
    age: number;
} 

typeorm生成的表單也可以儲存到文件裏

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Cats } from './cats.entity';
import { Repository } from 'typeorm';

@Injectable()
export class CatsService {
    constructor(

        @InjectRepository(Cats)
        private readonly catsRepository : Repository<Cats>

    ) {}

    async find(){
        return await this.catsRepository.find();
    }
}

然後在cats.module.ts引入typeorm的module類

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm'
import { Cats } from './cats.entity';
import { CatsService } from './cats.service';
import { CatsController } from './cats.controller';

@Module({
  imports: [TypeOrmModule.forFeature([Cats])],
  providers: [CatsService], 
  controllers: [CatsController]
})
export class CatsModule {}

此時已經可以連接數據庫了,爲了測試是否能連接數據庫配置一下cats的控制器

cats.controller.ts

import { Controller, Get } from '@nestjs/common';
import { CatsService } from './cats.service';
import { Repository } from 'typeorm';
import { Cats } from './cats.entity';
import { promises } from 'dns';

@Controller('cats')
export class CatsController {
    constructor(private readonly catService: CatsService) {}

    @Get()
    getfind(): Promise<Cats[]> {
        return this.catService.find();
    }
}

然後就可以看到輸出了一個[]因爲此時數據庫空。
所以第一次連接數據庫就成功了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章