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