「文件」nestjs使用Typeorm实现数据库CRUD操作
本示例在nestjs脚手架项目基础上 , 进行了一些修改 , 并通过TypeOrm实现了数据库的增删读写操作 。由于Typeorm更适合关系型数据库 , 本示例为简便起见 , 选择sqlite3作为试验数据库 。对于非关系型数据库如mongodb , 则推荐使用mongoose或者typegoose等库进行数据库操作 。
1.nestjs安装和快速启动
文章图片
文章图片
安装nestjs命令行工具
#安装cli工具
$ npm i-g @nestjs/cli
#新建项目
$ nest new projectName
#如果用yarn安装的话
$ yarn global add @nestjs/cli
2.模版项目helloworld说明
不同版本的cli命令行生成的默认项目可能有所不同 。这里将默认的helloworld修改为async异步形式来对nestjs方法进行说明 。
2.1 app.controller.ts文件
import { Controller, Get, Inject } from '@nestjs/common';
import { AppService } from './app.service';
/**
* 应用程序控制器 , @Controller() 可以指定参数 , 用于定义类的父路由 , 如 @Controller("cat") , 此时这个类的所有父路由就会成为 /cat
*
* 被 @Controller() 修饰的类 , 可以通过其构造函数完成依赖注入 , 但依赖注入的类必须与当前类属于同一个模块
*/
@Controller()
export class AppController {
/**
* 构造函数 , 用于注入这个类的依赖 , 注入类时 , 需要使用 @Inject() 修饰符 , 其参数是被注入的类的类名
* 在注入被 @Injectable() 修饰的类时 , 可以不使用 @Inject() 修饰参数 , 此时依赖注器入会使用参数的类型完成注入
*
* Tips: 这里使用 @Inject(AppService) 是为了规范代码风格
*/
constructor(
@Inject(AppService) private readonly appService: AppService,
) { }
/**
* @Get() 可以指定参数 , 用于定义方法路由 , 如 @Get(":id") , 此时这个方法路由就会成为 /:id , 即查询指定ID
*/
@Get()
async root() {
return this.appService.root();
}
}
2.2 app.service.ts文件
文章图片
文章图片
import { Injectable } from '@nestjs/common';
/**
* 被 @Injectable() 修饰的类 , 可以通过其构造函数完成依赖注入 , 但依赖注入的类必须与当前类属于同一个模块
*/
@Injectable()
export class AppService {
constructor() { } // 构造函数 , 一般用于处理依赖注入
async root() {
return 'Hello World!';
}
}
2.3 app.module.ts文件
import { Module } from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';
import { TypeOrmModule } from '@nestjs/typeorm';
import { CatModule } from 'cats/cat.module';
import { ErrorsInterceptor } from 'common/errors.interceptor';
import { AppController } from './app.controller';
import { AppService } from './app.service';
/**
* @Module() 定义一个模块 , 并管理这个模块的导入集合、控制器集合、提供者集合、导出集合
*/
@Module({
// TypeOrmModule.forRoot() 默认加载项目根目录下的 ormconfig.json 配置文件用于配置数据库连接
// TypeORM 配置文件详细文档 https://typeorm.io/#/using-ormconfig
推荐阅读
- 潍坊晚报|手机使用四年,凌晨自燃吓坏一家人
- 互联网的一些事|QuestMobile:2020 移动互联网人均使用时长同比增长 12.9%
- |为什么使用B+Tree?
- 驱动之家|专利文件曝光华为正开发屏下摄像头手机:正面都是屏
- cnBeta|专利文件暗示华为正在开发屏下隐藏式前摄智能机
- 山东伟豪思|袋料全自动拆垛机器人的使用给企业带来了哪些益处
- 融资微信否认监听用户聊天记录;苹果将投3.3亿美元在台建厂;小鹏汽车秘密提交IPO文件
- 网易网易披露招股文件:过去20年整体年化回报高达26.2%
- 无敌马克兔|使用3个看似简单的挑战,提高摄影技巧,拍摄出不俗的作品
- 摄影小强|存储先行者,光威SSD固态硬盘使用中的小惊喜
