Untitled
unknown
plain_text
5 months ago
1.6 kB
2
Indexable
exports.deletevariants = catchAsync(async (req, res, next) => { const {variants_ids} = req.body; const session = await mongoose.startSession(); try { session.startTransaction(); console.log(variants_ids) for(const productId of variants_ids){ if (!isValidObjectId(productId)) { return next(new AppError('Invalid product variant ID', 400)); } const data = await ProductVariant.aggregate([ {$match : {_id: toObjectId(productId,next)}}, { $lookup:{ from: 'products', localField: '_id', foreignField: 'variants', as: 'product' } } ]) if(data.length <1){ return next(new AppError('product variant not found', 400)); } if(!data[0]?.product[0]?._id){ return next(new AppError('product not found', 400)); } await Product.updateOne({_id:data[0]?.product[0]?._id}, { $pull: { variants: toObjectId(productId,next) } },{session}) const productToDelete = await ProductVariant.findById(productId); if (!productToDelete) { return res.status(400).json({ message: 'Product variant not found' }); } await ProductVariant.deleteOne({_id:toObjectId(productId)},{session}) } await session.commitTransaction(); session.endSession(); res.status(200).json({ message: 'Product variant deleted successfully' }); } catch (error) { await session.abortTransaction(); session.endSession(); return next(error); } });
Editor is loading...
Leave a Comment