返回

Nest.js数据库基础知识:与MySQL连接、实体定义与使用

前端

连接 MySQL 数据库

第一步,我们需要将Nest.js与MySQL数据库进行连接。在ormconfig.json文件中,我们需要添加以下配置:

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "password",
  "database": "nest_database"
}

该配置用于定义数据库连接信息,包括数据库类型、主机、端口、用户名、密码以及数据库名称。完成配置后,我们就可以通过注入方式在任何地方使用数据库连接了。

定义实体

接下来,我们来定义一个名为User的实体类。实体类是用来数据库中数据的,它定义了表的结构和字段。

import {Entity, Column, PrimaryGeneratedColumn} from '@nestjs/typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

在上面的代码中,我们定义了一个User类,它包含了三个属性:idnameemail@PrimaryGeneratedColumn()装饰器指定了id字段为主键,并且自动生成。@Column()装饰器则指定了其他两个字段的类型。

在 Service 中使用实体

定义了实体后,我们就可以在Service中使用它来进行数据操作了。以下是一个简单的例子:

import {Injectable, Inject} from '@nestjs/common';
import {Repository} from 'typeorm';
import {User} from './user.entity';

@Injectable()
export class UserService {
  constructor(@Inject('USER_REPOSITORY') private userRepository: Repository<User>) {}

  findAll(): Promise<User[]> {
    return this.userRepository.find();
  }

  findOne(id: number): Promise<User> {
    return this.userRepository.findOne(id);
  }

  create(user: User): Promise<User> {
    return this.userRepository.save(user);
  }

  update(user: User): Promise<User> {
    return this.userRepository.save(user);
  }

  delete(id: number): Promise<void> {
    return this.userRepository.delete(id);
  }
}

在这个Service中,我们首先通过注入Repository来获得User实体的存储库。然后,我们定义了几个方法,用于对数据库进行增删改查操作。这些方法都返回Promise对象,以便我们可以在其他地方异步地使用它们。

结语

这仅仅是Nest.js数据库操作的一个入门级介绍。在后续的文章中,我们将深入探讨更高级的主题,如多对多关系、事务处理等等。敬请期待!