Как корректно передавать данные между контроллером и сервисом в TypeScript?

Каким образом лучше всего организовать обращение к базе данных (в данном случае ORM - Prisma) в методах получения и создания пользователя для файлов app.service.ts и app.controller.ts: использовать асинхронные функции или оставить промисы?
  • 29 июня 2024 г. 21:32
Ответы на вопрос 1
В TypeScript наиболее распространенным способом передачи данных между контроллерами и сервисами является использование интерфейсов и классов. Класс сервиса может содержать методы для получения и сохранения данных, а интерфейс может определять структуру этих данных. 

Что касается обращения к базе данных с использованием ORM Prisma, наиболее эффективным способом является использование асинхронных функций. В async/await синтаксисе код будет выглядеть более чисто и удобно читаемо, чем при использовании промисов. Например:

```typescript
// app.service.ts
import { PrismaClient } from '@prisma/client';

export class UserService {
  private prisma = new PrismaClient();

  async getUser(id: number) {
    return await this.prisma.user.findUnique({ where: { id } });
  }

  async createUser(data: any) {
    return await this.prisma.user.create({ data });
  }
}

// app.controller.ts
import { UserService } from './user.service';

export class UserController {
  private userService = new UserService();

  async getUser(id: number) {
    return await this.userService.getUser(id);
  }

  async createUser(data: any) {
    return await this.userService.createUser(data);
  }
}
```

Таким образом, использование асинхронных функций в TypeScript позволит упростить и улучшить читаемость кода при работе с базой данных через ORM Prisma.
Похожие вопросы