首页 > 数据库 >【Nest教程】连接MySQL数据库 -----转

【Nest教程】连接MySQL数据库 -----转

时间:2023-08-17 10:57:16浏览次数:51  
标签:Nest messages ----- nestjs MySQL import Message 数据库 typeorm

 

 

来自:https://cloud.tencent.com/developer/article/1774827

本人测试这文章确实成功了,建议看上面链接的原文

 

 

 

 

 

 

 

 

 

 

 

 

对于一个Web API项目,数据库是必不可少的,Nest与数据库无关,允许您轻松地与任何SQL或NoSQL数据库集成。根据您的偏好,您有许多可用的选项。本篇我们讲解集成MySQL数据库,Nest提供了@nestjs/typeorm包,为了开始使用它,我们首先安装所需的依赖项。

1 安装依赖

typeorm 对 mysql 数据库版本有要求,需要5.6以上

npm install --save @nestjs/typeorm typeorm mysql

2 导入TypeOrmModule

安装完成后我们在app.module导入TypeOrmModule,

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
// 引入数据库的及配置文件
import { TypeOrmModule } from '@nestjs/typeorm';
import { Connection } from 'typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: '127.0.0.1',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    })
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {
  constructor(private readonly connection: Connection) {}
}

forRoot()方法接受与来自TypeORM包的createConnection()相同的配置对象。另外,我们可以创建ormconfig.json,这种方式创建的json文件,在测试过程中,运行报错,具体原因没有找到。

synchronize字段代表是否自动将实体类同步到数据库

3 编写功能模块

我们编写一个模块来测试。新建message文件夹,文件夹下有下面几个文件

message.entity.ts

import { Column, Entity, PrimaryGeneratedColumn, BaseEntity } from 'typeorm';

// 这里可以修改表名
@Entity()
export class Message extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column('int', { name: 'user_id' })
  userId: number;

  @Column('text', { name: 'content' })
  content: string;

  @Column('int', { name: 'to_user_id' })
  toUserId: number;

  @Column('datetime', { name: 'created_time' })
  createdTime: Date;

  @Column('int')
  creator: number;

  @Column('datetime', { name: 'updated_time' })
  updatedTime: Date;

  @Column('int')
  updator: number;
}

messages.service.ts

import { Injectable } from '@nestjs/common';
// import { Message } from './interfaces/message.interface';
// ORM
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Message } from './message.entity';

@Injectable()
export class MessagesService {
  constructor(
    @InjectRepository(Message)
    private readonly messagesRepository: Repository<Message>,
  ) {}

  private readonly messages: Message[] = [];

  async findAll(): Promise<Message[]> {
    return await this.messagesRepository.find();
  }
}

messages.module.ts

import { Module } from '@nestjs/common';
import { MessagesService } from './messages.service';
import { MessagesController } from './messages.controller';

import { TypeOrmModule } from '@nestjs/typeorm';
import { Message } from './message.entity';

@Module({
  imports: [TypeOrmModule.forFeature([Message])],
  providers: [MessagesService],
  controllers: [MessagesController],
})
export class MessagesModule {}

messages.controller.ts

import { Controller, Post } from '@nestjs/common';
import { MessagesService } from './messages.service';
import { Message } from './message.entity';

@Controller('messages')
export class MessagesController {
  constructor(private readonly messagesService: MessagesService) {}

  @Post()
  findAll(): Promise<Message[]> {
    return this.messagesService.findAll();
  }
}

4 导入及运行

app.module.ts文件导入

// messages
import { MessagesModule } from './messages/messages.module';


@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: '94.191.51.170',
      port: 3306,
      username: 'wangcong#2020',
      password: 'wangcong#2020',
      database: 'blog',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }),
    MessagesModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {
  constructor(private readonly connection: Connection) {}
}

运行项目,用数据库管理工具连接我们的数据库,可以发现,已经自动创建表,我们随便加一条测试数据

我们用postman测试,可以返回我们加的测试数据。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。 原始发表:2021-01-14,如有侵权请联系 [email protected] 删除              

标签:Nest,messages,-----,nestjs,MySQL,import,Message,数据库,typeorm
From: https://www.cnblogs.com/hechunfeng/p/17637022.html

相关文章

  • 记一次MySQL死锁问题排查
    事情的起因:我司有一款应用处于新旧系统切换阶段,新旧服务同时穿插运行,新服务不断迭代的同时来不断下线旧服务,其中有一个编辑客户信息的功能因为工作量太大,所以其中一部分内容是通过RPC的方式调用新服务的API进行保存的,然后在出现了一个神奇的问题,RPC接口频繁超时,于是我对RPC接口......
  • Unity 自定义路径漫游-车辆 技术解析
    如第一张图所示,可以看到蓝线就是自定义的路径,车辆和飞机会沿自定义路径漫游,这对于动画技术来讲是一个基本的也是非常受欢迎博得眼球的技术,我需要记录一下这个技术的实现1.首先选择一个移动的物体,给它的inspector挂上脚本CarPath(Script)代码比较长,没有时间过度解读他,我说明怎......
  • typeScript学习-TS类型-其他特殊类型-可变元组
    typeScript学习可变元组:letpeople:[string,number,string,string,string]=["wangwu",23,"地址",'13312341234','备注']//当前三个数据固定格式,后面数据不确认格式时用可变元组//可变元组//letcustomers:[string,number,string,...any[]]=[&qu......
  • 无涯教程-Perl - study函数
    描述此功能需要花费额外的时间来研究EXPR,以改善在EXPR上执行的正则表达式的性能。如果省略EXPR,则使用$_。实际的速度增益可能非常小,具体取决于您希望搜索字符串的次数。您一次只能学习一种表达式或标量。语法以下是此函数的简单语法-studyEXPRstudy返回值此函数不......
  • 【2023-08-16】公事公办
    20:00工作是一件好事,而我们每个人都有许多工作要干;它有益于身心健康,使我们不会感到无聊,不会干坏事。比起金钱和时装来,它更能给我们一种能力感和独立感。                                      ......
  • Spring-事务操作
       1、什么是事务          事务就是一系列的动作,它们被当作一个单独的工作单元,这些动作要么全部完成,要么全部不起作用。        案例:转钱业务          扣钱和加钱  --要么都执行要么都不执行        JDBC  --它模式事务自动提交......
  • Spring-Aop
       1、面向切面编程Aspect,通过预编译方式和运行期间动态代理实现程序的统一维护的一种技术    2、AOP应用场景        (1)记录日志        (2)权限校验        (3)Spring事务管理   3、AOP的结构        AOP要做的三件事,在哪里切入,......
  • DAMA-CDGA/CDGP数据治理认证8月20日开班啦!!!
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 2023北京/上海/广州/深圳CSPM-3国标项目管理中级认证招生
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • 2023年9月重庆/广州/深圳DAMA-CDGA/CDGP认证报名
    据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA)数据治理专家(CertifiedDataGovernanceProfessional,CDGP) 考试时间: CDGA:2023......