Задать вопрос
zenithxxl
@zenithxxl
Веб-разработчик

Как правильно пердавать данные между controller.ts и service.ts?

Допустим есть два файла 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)
	}
  • Вопрос задан
  • 74 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы