小满NestJS:连接数据库的旅程

作者:蛮不讲李2024.01.17 17:16浏览量:9

简介:在NestJS中连接数据库是开发全栈应用的重要一步。本文将引导你了解如何使用TypeORM或Mongoose连接到关系型数据库或非关系型数据库,并实现数据的增删改查操作。

在NestJS中,连接数据库是开发全栈应用的重要步骤。NestJS提供了多种方式来连接和操作数据库,包括使用TypeORM或Mongoose等库。在这篇文章中,我们将探讨如何使用这些库连接到关系型数据库或非关系型数据库,并实现数据的增删改查操作。
一、选择合适的数据库和ORM
首先,你需要选择适合你的应用的数据库和对象关系映射器(ORM)。常见的选择包括关系型数据库如PostgreSQL、MySQL等以及非关系型数据库如MongoDB等。TypeORM是一个流行的ORM,它支持多种数据库,而Mongoose则专注于MongoDB。
二、安装必要的包
在开始之前,你需要安装必要的包。使用npm或yarn安装TypeORM或Mongoose,以及NestJS的官方数据库模块。例如,如果你选择使用TypeORM,你可以运行以下命令来安装相关包:

  1. npm install typeorm mysqlnestjs
  2. # or
  3. yarn add typeorm mysqlnestjs

三、配置数据库连接
在你的NestJS应用程序中,你需要配置数据库连接。在你的模块中,使用@nestjs/typeorm@nestjs/mongoose来导入适当的装饰器,并配置连接字符串、用户名和密码等。例如,以下是使用TypeORM的示例配置:

  1. import { Module } from '@nestjs/common';
  2. import { TypeOrmModule } from '@nestjs/typeorm';
  3. @Module({
  4. imports: [TypeOrmModule.forRoot({
  5. type: 'mysql',
  6. host: 'localhost',
  7. port: 3306,
  8. username: 'test',
  9. password: 'test',
  10. database: 'test',
  11. entities: [], // 这里添加你的实体类路径数组
  12. synchronize: true, // 自动同步到数据库
  13. })],
  14. })
  15. export class AppModule {}

四、创建实体类
接下来,创建你的实体类来表示数据库中的表。你可以使用TypeORM的@Entity装饰器来标记一个类作为实体类,并使用@PrimaryColumn@Column等装饰器来定义实体的属性和列。例如:

  1. import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
  2. @Entity()
  3. export class User {
  4. @PrimaryGeneratedColumn()
  5. id: number;
  6. @Column()
  7. name: string;
  8. @Column()
  9. email: string;
  10. }

五、实现增删改查操作
现在你可以在你的服务中实现增删改查操作。使用TypeORM的@Repository装饰器来注入一个存储库实例,并使用存储库的方法来执行查询、插入、更新和删除操作。例如:
```typescript
import { Injectable } from ‘@nestjs/common’;
import { InjectRepository } from ‘@nestjs/typeorm’;
import { Repository } from ‘typeorm’;
import { User } from ‘./user.entity’;
@Injectable()
export class UserService {
constructor(private readonly userRepository: Repository) {}
async findAll(): Promise {
return this.userRepository.find();
}