Почему тут нужен 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?