nestjs+typeorm实现增删改查

nestjs+typeorm 实现增删改查

为什么学nestjs,因为自己想要侵入微服务架构中的bff层,而本身自己对java的开发比较欣赏,层级结构很清晰,而nestjs可以说是node版本spring。

初始化nestjs项目
npm i -g @nestjs/cli
nest new project-name

执行这个会生成nestjs的项目模板

安装依赖
cd project-name
npm i
npm run start:dev

启动过后就可以在网页上输入localhost:3000,会有内容,一个基本的服务器就启动起来了。

orm框架选用typeorm,node.js世界中最成熟的对象关系映射器(ORM),因为是用ts编写的,可以和nest更好的集成。

npm install --save typeorm mysql

初始化的app.controller和app.service可以删除,

链接数据库

app.module.ts

import { Module, Logger } from '@nestjs/common';
import * as path from 'path';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Connection } from 'typeorm';
import { ConfigModule, ConfigService } from 'nestjs-config';
import { UserModule } from './core/user/user.module';

const entitiesPath =
  process.env.NODE_ENV === 'prod'
    ? __dirname + '/**/*.entity{.ts,.js}'
    : __dirname + '/**/*.entity{.ts,.js}';
Logger.log(process.env.NODE_ENV, '当前环境');
@Module({
  imports: [
    ConfigModule.load(path.resolve(__dirname, 'config', '**/!(*.d).{ts,js}'), {
      modifyConfigName: name => name.replace('.config', ''),
    }), 
    TypeOrmModule.forRoot({
       type: 'type',
      host:'localhost',
      port: 3306,
      username: 'username',
      password: 'password',
      database: 'database',
      entities: [__dirname +'/**/*.entity{.ts,.js}'],
      synchronize:true,
      logging: true, 
    }),
UserModule],
  controllers: [],
  providers: [],
})
export class AppModule {
  constructor(private readonly connection: Connection){}
}

以上的配置是链接数据库的配置,将user模块导入到Appmodule

查询数据库的数据

user.module.ts

import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './user.entity';

@Module({
  imports: [TypeOrmModule.forFeature([User])],
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}

import: [TypeOrmModule.forFeature([User])],作用是将User实体类交给这个user模块使用

user.entity.ts

import { Entity,
    PrimaryGeneratedColumn,
    Column,
    CreateDateColumn,
    UpdateDateColumn, } from 'typeorm';
  
  
  @Entity('user')
  export class User {
   
    @PrimaryGeneratedColumn({
      type: 'int',
      name: 'id',
      comment: '主键id',
    })
    id: number;
  
    @Column('varchar', {
      nullable: false,
      unique: true,
      length: 150,
      name: 'uuid',
      generated: 'uuid',
      comment: 'uuid',
    })
    uuid: string;
  
    @Column('varchar', {
      nullable: false,
      unique: true,
      length: 100,
      name: 'name',
      comment: '姓名',
    })
    name: string;
  
    @Column('varchar', {
      nullable: false,
      name: 'password',
      comment: '密码',
    })
    password: string;
  
    @Column('tinyint', {
      nullable: true,
      default: () => 1,
      name: 'is_active',
      comment: '是否活跃',
    })
    isActive: number | null;
  
    @Column('varchar', {
      nullable: true,
      length: 100,
      name: 'email',
      comment: 'email',
    })
    email: string | null;
  
    @Column('varchar', {
      nullable: true,
      length: 11,
      name: 'mobile',
      comment: '手机号码',
    })
    mobile: string | null;
  
    @Column('tinyint', {
      nullable: true,
      default: () => 0,
      comment: '性别',
      name: 'gender',
    })
    gender: number | null;
  
    @CreateDateColumn({
      type: 'datetime',
      comment: '创建时间',
      name: 'create_at',
    })
    createAt: Date;
  
    @UpdateDateColumn({
      type: 'datetime',
      comment: '更新时间',
      name: 'update_at',
    })
    updateAt: Date;
  
  }
  

user.service.ts

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
// import { TypeOrmCrudService } from '@nestjsx/crud-typeorm';
import { Repository } from 'typeorm';
import {User} from './user.entity'
@Injectable()
export class UserService {
  constructor(@InjectRepository(User) private readonly userRepository:Repository<User>){}
  getHello(): string {
   return "hhhhhh";
  }
 async getUser():Promise<User>{
    return await this.userRepository.findOne({name:"luoqianyu"});
  }
}

在当前service使用。

user.controlller.ts

import { Controller, Get } from '@nestjs/common';
import { User } from './user.entity';
import {UserService} from './user.service';
@Controller()
export class UserController {
  constructor(private readonly UserService: UserService) {}

  @Get()
  getHello(): string {
    return this.UserService.getHello();
  }
  @Get("/getUser")
  getUser():Promise<User>{
    return this.UserService.getUser();
  }
}

最后在网页上输入localhost:3000/getUser可以访问到当前的数据库中的数据

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值