У меня есть функция, которая создает коды купонов. Я добавил дату окончания срока действия в поле, которое автоматически истечет срок действия купона в соответствии с указанной датой. Для этого я использовал свойство mon goose TTL. Но моя проблема заключается в том, что он удаляет документ навсегда из базы данных.
Вот моя схема и контроллер для того же:
const promotionalCodeSchema = new schema({
promoCodeName: {
type: String,
},
promoCodeType: String,
expired: {
type: Boolean,
default: false
},
amount: String,
isActive: {
type: Boolean,
default: true
},
user_id: ObjectId,
expirationDate: {
type: Date,
expires: 0,
unique: true
}
}, {
timestamps: true
});
async createPromoCode(req, res) {
let body = req.body;
try {
let newObjBody = {
promoCodeName: "",
promoCodeType: "",
amount: "",
expirationDate:{
expires:0
}
};
newObjBody.amount = body.promoAmount;
newObjBody.isActive = body.promoActive;
newObjBody.promoCodeName = PromotionalCodeController.generateCoupon();
newObjBody.promoCodeType = body.promoCodeType;
let days = parseInt(body.promoExpiry.replace(/[^\d]+/g, ""));
newObjBody.expirationDate = new Date(Date.now() + (days * 24 * 3600 * 1000));
const promotionalcodeschema = new PromotionalCodeSchema(newObjBody);
await promotionalcodeschema.save((err, result) => {
if (err) {
res.status(400).json({err})
} else {
res.status(201).json(result)
}
});
} catch (error) {
console.log(error);
}
}
Все работает нормально, но мне нужно только обновить документ свойство, срок действия которого истек: true, когда дата истечения срока действия достигнута, но не удаляется окончательно из базы данных.
Пожалуйста, помогите мне предложить правильный способ достижения того же.