Я пытаюсь увеличить или уменьшить количество объявлений пользователя. Я могу увеличить число, но не могу уменьшить его.
const updateUserAdsNumber = (saveOrDelete) => {
finalSchema.post(saveOrDelete, (ad, next) => {
const increaseOrDecrease = saveOrDelete === 'save' ? 1 : -1;
User.findOneAndUpdate(
{_id: ad.adInfo.userId},
{$inc: {adsPublished: increaseOrDecrease}},
(err, user) => {
if (err) return console.error('User ads could not increase or decrease', err.message);
}
);
next();
});
};
updateUserAdsNumber('save');
updateUserAdsNumber('deleteOne');
finalSchema.plugin(mongooseUniqueValidator);
const AdModel = mongoose.model('Ad', finalSchema);
Вот маршрут, который удаляет объявление:
router.delete('/:id', verifyTokenMiddleware, (req, res) => {
const id = req.params.id;
const {tokenDecoded} = req;
Ad.deleteOne({'adInfo.userId': tokenDecoded.userId, _id: mongoose.Types.ObjectId(id)}, (err) => {
if(err){
res.status(400).send({
message: 'The ad could not be deleted. (Error_message = ' + err.message + ')'
});
} else {
res.send({
message: 'Ad deleted successfully!'
})
}
})
});
Я использую mongoose@5.2.13
и Mongo 3.6.5
, что может пойти не так? Я мог бы поместить логику непосредственно в router.delete, но я предпочитаю подключать ее перед экспортом схемы.