nestjs typeorm 操作mysql 数据表 user 的 user.service.ts 如何写
时间: 2024-05-03 10:17:53 浏览: 174
首先,需要安装 `@nestjs/typeorm` 和 `typeorm` 模块,以及 `mysql` 驱动程序。
在 `user.service.ts` 文件中,需要先导入 `Injectable`、`InjectRepository` 和 `Repository` 三个装饰器:
```typescript
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
```
接下来,在类上方添加 `@Injectable()` 装饰器,表示这是一个可注入的服务:
```typescript
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private readonly userRepository: Repository<User>,
) {}
}
```
在构造函数中,使用 `@InjectRepository` 装饰器注入 `User` 实体对应的存储库,并将其赋值给 `userRepository` 属性。
接下来,就可以在 `UserService` 类中定义各种操作 `User` 实体的方法了,例如:
```typescript
async findAll(): Promise<User[]> {
return await this.userRepository.find();
}
async findById(id: number): Promise<User> {
return await this.userRepository.findOne(id);
}
async create(newUser: User): Promise<User> {
return await this.userRepository.save(newUser);
}
async update(id: number, updatedUser: User): Promise<User> {
const user = await this.userRepository.findOne(id);
if (!user) {
throw new Error('User not found');
}
Object.assign(user, updatedUser);
return await this.userRepository.save(user);
}
async delete(id: number): Promise<void> {
await this.userRepository.delete(id);
}
```
以上示例中,`findAll` 方法返回所有用户,`findById` 方法根据 ID 返回单个用户,`create` 方法创建新用户并返回该用户,`update` 方法更新现有用户并返回更新后的用户,`delete` 方法删除用户。
注意,以上示例中的 `User` 实体是一个假设的示例,你需要根据你自己的实体类进行相应的更改。
最后,将 `UserService` 导出即可在其他模块中使用它。
阅读全文