nestjs 链接并操作mysql数据库步骤

163 阅读1分钟

1安装相关插件

$ npm install --save @nestjs/typeorm typeorm mysql2

2,在app.modules.ts 中引入

...
...
...
// 以上是其他相关引入,此处略过
import { TypeOrmModule } from '@nestjs/typeorm';
// 我定义一个导航的表做测试
import { Nav } from './entity/nav.entity';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: '***你的密码',
      database: 'test', // 这个数据库名字一定提前新建好,不然会报错
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }), // 数据库的
    TypeOrmModule.forFeature([Nav]),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule  {}

这是nav实体,简单测试就两个字段

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class Nav {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  title: string;
}

3,在服务里操作数据库

app.service.ts

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

@Injectable()
export class AppService {
  constructor(
    @InjectRepository(Nav)
    private readonly nav: Repository<Nav>,
  ) {}
  async getNav() {
    return await this.nav.find();
  }
}

4.就可以在控制器里使用服务了

app.controller.ts

import {
  Controller,
  Get,
  Post,
  Response,
} from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}
  @Get('/getnav')
  async getNav(@Response() res) {
    const list = await this.appService.getNav();
    res.send({
      list: list,
    });
  }
}

5.效果

WeChatdc0dc6cb6d1c59ee38daad6fef95e1c7.png

WeChat5ef60956ae345f36711a35cc3e2e5eaf.png