使用nestjs和typeorm连接数据库

本文介绍了如何使用NestJS框架与TypeORM库来连接和操作MySQL数据库,包括引入typeorm和mysql模块、创建cats模块、在AppModule中引入TypeormModule、配置cats实体以及测试数据库连接。

引入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();
    }
}

然后就可以看到输出了一个[]因为此时数据库空。
所以第一次连接数据库就成功了。

NestJS使用 TypeORM 连接达梦(DM)数据库,你需要安装必要的依赖并配置TypeORM连接。以下是大致步骤: 1. **安装依赖**: - 首先,确保已经安装了`nestjs`、`typeorm`对应的`dm2-driver-typeorm`模块。可以使用npm或yarn来安装: ``` npm install @nestjs/typeorm dm2-driver-typeorm ``` 2. **配置项添加**: 在`package.json`文件中添加`typeorm`作为`dependencies`下的一项,并在`nestjs.config.ts`或单独的`ormconfig.js`文件中添加达梦数据库的相关配置。例子如下: ```javascript // ormconfig.jsnestjs.config.ts { type: 'DM', host: 'your_host', port: your_port, username: 'your_username', password: 'your_password', database: 'your_database_name', entities: ['src/**/*.entity.ts'], // 定义实体类的路径 synchronize: true, // 是否自动同步表结构,默认为true logging: false, // 关闭TypeORM的日志输出,如果需要可以开启 } ``` 3. **连接到模块**: 在你的 NestJS 应用的服务或模块中,注入`TypeOrmModule`来创建TypeORM连接池: ```typescript import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { YourEntity } from './entities/your-entity.entity'; // 替换为你的实体名 @Module({ imports: [TypeOrmModule.forRootAsync({ useFactory: () => ({ ...getDmDatabaseConfig(), // 使用上述配置工厂函数 }), })], providers: [YourService], // 如果有服务引用TypeORM }) export class AppModule {} ``` 4. **使用连接**: 现在可以在服务中注入`EntityManager`或`Repository`来操作数据库: ```typescript import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { YourEntity } from './entities/your-entity.entity'; @Injectable() export class YourService { constructor( @InjectRepository(YourEntity) private readonly yourRepository: Repository<YourEntity>, ) {} async findAll() { return await this.yourRepository.find(); } } ``` 完成以上步骤后,你的 NestJS 应用就可以通过TypeORM连接达梦数据库进行操作了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值