Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Оптимизация функции TS.

Dima Akulichev Ученик (95), на голосовании 11 месяцев назад
Доброго времени суток!
Мне нужно типизировать функцию создания product.
Функция находится в сервисе, но это не важно.
Мне нужно типизировать массив файлов(Картинок для product).
Вроде бы проблему можно решить с помощью File[], однако в таком случае отсутствует функция mv, а она необходима для сохранения файла в папку static.
Вот код:
async create(
infoForCreatingProduct: InfoForCreatingProduct,
images: File[],
): Promise<Model<any, any>> {
const productImages: Model<any, any>[] = await Promise.all(
images.map (img => {
let fileName: string = v4() + '.jpg';
img.mv (path.resolve(__dirname, '..', 'static', fileName));
return ProductImage.create({
productId: product.id ,
url: fileName,
});
}),
);

if (infoForCreatingProduct.info) {
const info = JSON.parse(infoForCreatingProduct.info);
info.forEach(infoItem =>
ProductInfo.create({
title: infoItem.title,
description: infoItem.description,
deviceId: product.id ,
}),
);
}

const product: any = await Product.create({
price: infoForCreatingProduct.price,
brandId: infoForCreatingProduct.brandId,
typeId: infoForCreatingProduct.typeId,
name: infoForCreatingProduct.name ,
});

return product;
}

Кому интересно: сервер на Express, для взаимодействия с бд использую Sequelize.
Код написан 13-ти летним школьником для научной работы, так-что если можете помочь оптимизировать функцию - буду рад:)
Голосование за лучший ответ
Bulat_Almukhametov Мастер (1160) 1 год назад
Зачем тебе mv внутри img? Вынеси как отдельную функцию.
И вот этот код меня смущает, ты создаешь объекты, которые никуда не сохраняются:
 info.forEach(infoItem =>   
ProductInfo.create({
title: infoItem.title,
description: infoItem.description,
deviceId: product.id,
}),
);
Может, лучше map использовать вместо forEach?
Похожие вопросы