NestJS 与 TypeORM 项目教程

NestJS 与 TypeORM 项目教程

nestjs-typeormNestJS, TypeORM and PostgreSQL — full example development and project setup working with database migrations.项目地址:https://gitcode.com/gh_mirrors/ne/nestjs-typeorm

项目介绍

NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,完全支持 TypeScript(但同时仍然允许开发者使用纯 JavaScript 编写代码),并结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数式响应编程)的元素。

TypeORM 是一个非常成熟的对象关系映射器(ORM),适用于 TypeScript 和 JavaScript。由于它是用 TypeScript 编写的,因此与 NestJS 框架集成得非常好。

项目快速启动

安装依赖

首先,克隆项目仓库并安装必要的依赖:

git clone https://github.com/GauSim/nestjs-typeorm.git
cd nestjs-typeorm
npm install

配置数据库

在项目根目录下创建一个 ormconfig.json 文件,并配置你的数据库连接:

{
  "type": "postgres",
  "host": "localhost",
  "port": 5432,
  "username": "yourusername",
  "password": "yourpassword",
  "database": "yourdatabase",
  "entities": ["dist/**/*.entity{.ts,.js}"],
  "synchronize": true
}

启动应用

运行以下命令启动应用程序:

npm run start

应用案例和最佳实践

创建一个简单的 CRUD 应用

以下是一个简单的示例,展示如何在 NestJS 中使用 TypeORM 创建一个基本的 CRUD 应用:

创建实体
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

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

  @Column()
  firstName: string;

  @Column()
  lastName: string;

  @Column({ default: true })
  isActive: boolean;
}
创建服务
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private usersRepository: Repository<User>,
  ) {}

  findAll(): Promise<User[]> {
    return this.usersRepository.find();
  }

  findOne(id: number): Promise<User> {
    return this.usersRepository.findOne(id);
  }

  async remove(id: number): Promise<void> {
    await this.usersRepository.delete(id);
  }
}
创建控制器
import { Controller, Get, Param } from '@nestjs/common';
import { UserService } from './user.service';
import { User } from './user.entity';

@Controller('users')
export class UserController {
  constructor(private readonly userService: UserService) {}

  @Get()
  findAll(): Promise<User[]> {
    return this.userService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string): Promise<User> {
    return this.userService.findOne(+id);
  }
}

典型生态项目

集成 Swagger

为了更好地进行 API 文档管理,可以集成 Swagger:

npm install --save @nestjs/swagger swagger-ui-express

main.ts 中配置 Swagger:

import { NestFactory } from '@nestjs/core';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const config = new DocumentBuilder()
    .setTitle('API')
    .setDescription('The API description')
    .setVersion('1.0')
    .addTag('api')
    .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule

nestjs-typeormNestJS, TypeORM and PostgreSQL — full example development and project setup working with database migrations.项目地址:https://gitcode.com/gh_mirrors/ne/nestjs-typeorm

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
nestjs是一个基于Node.js的Web框架,它提供了一种现代化的、模块化的、可扩展的方式来构建服务端应用程序。typeorm是一个强大的ORM(对象关系映射)库,它可以将数据库中的关系数据映射为对象,并且提供了一些便利的方法来操作这些对象。 nestjs整合typeorm可以帮助我们更方便地操作数据库,以下是nestjs整合typeorm的步骤: 1. 安装typeorm和nest-typeorm依赖: ``` npm install --save typeorm @nestjs/typeorm ``` 2. 在app.module.ts中引入typeorm和nest-typeorm: ``` import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { User } from './user.entity'; // 引入实体类 @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: '123456', database: 'test', entities: [User], // 实体类列表 synchronize: true, }), TypeOrmModule.forFeature([User]), // 导入要用到的实体类 ], controllers: [AppController], providers: [AppService], }) export class AppModule {} ``` 3. 创建实体类: ``` import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @Column() age: number; @Column() email: string; } ``` 4. 在服务中使用: ``` import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { User } from './user.entity'; @Injectable() export class UserService { constructor( @InjectRepository(User) private readonly userRepository: Repository<User>, ) {} async findAll(): Promise<User[]> { return await this.userRepository.find(); } async create(user: User): Promise<User> { return await this.userRepository.save(user); } async update(id: number, user: User): Promise<void> { await this.userRepository.update(id, user); } async delete(id: number): Promise<void> { await this.userRepository.delete(id); } } ``` 以上是nestjs整合typeorm的基本步骤,通过使用nestjs整合typeorm可以更方便地操作数据库,并且nestjs提供了很多其他功能,例如异常处理、日志等。如果您有任何问题或者需要更详细的介绍,请告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁菁令

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值