Untitled
unknown
plain_text
5 months ago
1.4 kB
3
Indexable
exports.deleteAttributes = catchAsync(async (req, res, next) => { let { product_id } = req.body; const session = await mongoose.startSession(); try { session.startTransaction(); if (!product_id) { return next(new AppError('id is required', 400)); } const prod = await Product.findById(product_id).session(session); if (!prod) { return next(new AppError('Prod', 400)); } const attributes = await VariantAttribute.find({product:product_id}).select("_id").session(session); if (attributes.length < 1) { return next(new AppError(`Attributes not found`, 400)); } for (let att of attributes) { await VariantValue.deleteMany({ attribute: att._id }).session(session); // Delete associated values await VariantAttribute.deleteOne({_id:att._id }).session(session); } // delete variants await ProductVariant.deleteMany({ _id: {$in : prod.variants} }).session(session); await prod.updateOne({ $set: { variants: [] } }).session(session); await session.commitTransaction(); session.endSession(); res.status(200).json({ success: true, message: 'Attributes successfully deleted', }); } catch (error) { await session.abortTransaction(); session.endSession(); return next(error); } });
Editor is loading...
Leave a Comment