Почему тут нужен await?

Почему в части кода const existProduct = await this.ifSkuTaken(productDto.sku) нужен await? Если его не прописать возвращается Promise. Зато в контроллере при вызове методов из service(nestjs) не надо писать await, почему так?

import { Product } from './products.model';
import { InjectModel } from '@nestjs/sequelize';
import { CreateProductDto } from './dto/create-product.dto';
import { UpdateProductDto } from './dto/update-product.dto';
import { FilesService } from 'src/files/files.service';

@Injectable()
export class ProductsService {

    constructor(@InjectModel(Product) private productRepository: typeof Product,
                private fileService: FilesService) {}

    async createProduct(productDto: CreateProductDto, image) {
        const existProduct = await this.ifSkuTaken(productDto.sku)
        if(existProduct) {
            throw new HttpException('Артикул уже занят другим продуктом', HttpStatus.BAD_REQUEST)
        }
        const fileName = await this.fileService.createFile(image)
        const product = await this.productRepository.create({ ...productDto, image: fileName })
        return product
    }
    
    async ifSkuTaken(sku: number) {
        const product = await this.productRepository.findOne({ where: {sku} })
        return Boolean(product)
    }

}

В nestjs есть controller и service. Вот часть кода из controller:

createProduct(@Body() productDto: CreateProductDto,
              @UploadedFile() image) {
    return this.productsService.createProduct(productDto, image)
}

При вызове метода createProduct(productDto, image) не нужно ставить await ведь и без него всё работает, а в примере выше почему тогда нужен await?


Ответы (0 шт):