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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宁菁令

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

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

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

打赏作者

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

抵扣说明:

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

余额充值