Untitled
unknown
plain_text
a year ago
1.6 kB
4
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