Допустим есть два файла app.service.ts и app.controller.ts
Есть 2 метода в каждом: получение и создание пользователя(@Get() и @Post()), и в этих методах будет обращение к бд (в данном случае ORM - Prisma)
Как будет правильнее, сделать все асинхронным, то есть:
app.service.ts
constructor(private readonly prisma: PrismaService) {}
async findAll(): Promise<User[]> {
const users = await this.prisma.user.findMany({
orderBy: { createdAt: 'desc' },
})
if (!users) throw new BadRequestException('Error!')
return users
}
async create(data: CreateUserDto): Promise<User> {
const user = await this.prisma.user.create({ data })
if (!user) throw new BadRequestException('Error')
return user
}
app.controller.ts
@Get()
async findAll() {
return await this.userService.findAll()
}
@Post('create')
@UsePipes(new ValidationPipe())
async create(@Body() createUserDto: CreateUserDto) {
return await this.userService.create(createUserDto)
}
Или оставить промисы:
app.service.ts
constructor(private readonly prisma: PrismaService) {}
findAll(): User[] {
const users = this.prisma.user.findMany({
orderBy: { createdAt: 'desc' },
})
if (!users) throw new BadRequestException('Error!')
return users
}
create(data: CreateUserDto): Promise<User> {
const user = this.prisma.user.create({ data })
if (!user) throw new BadRequestException('Error')
return user
}
app.controller.ts
@Get()
findAll() {
return this.userService.findAll()
}
@Post('create')
@UsePipes(new ValidationPipe())
create(@Body() createUserDto: CreateUserDto) {
return this.userService.create(createUserDto)
}