У меня в экспрессе есть два обработчика маршрута, один из которых является промежуточным программным обеспечением обратного вызова param, который выполняется, когда параметр соответствует, а второй тоже выполняется с указанным выше параметром в методе DELETE.
Код выглядит следующим образом:
const findPlan = async function (req, res, next) {
try {
let projection = {};
let plan = await AppPlans
.findOne({_id: req.params.appPlanID, active: true})
.select(projection)
.exec();
if (!plan) {
let err = new Error("No plan found");
err.status = 404;
return next(err);
}
req.plan = plan;
return next();
} catch (err) {
return next(err);
}
};
const deletePlan = async function (req, res, next) {
try {
req.plan.active = false;
await req.plan.save();
return res.sendStatus(202);
} catch (err) {
return next(err);
}
};
Сказанное выше дает мне со стороны req.plan.active = false
предупреждение:
Значение, присвоенное этому примитиву, будет потеряно
Ранее предупреждение не отображалось, в то время как запрос Mongoose для функции findPlan
был определен с обратным вызовом, как:
const findPlan = function (req, res, next) {
try {
let projection = {};
AppPlans
.findOne({_id: req.params.appPlanID, active: true})
.select(projection)
.exec(function (err, plan) {
if (err) {
return next(err);
}
else if(!plan){
let err = new Error("No plan found");
err.status = 404;
return next(err);
}
req.plan = plan;
return next();
});
} catch (err) {
return next(err);
}
};
Что-то не так, например, случай с краем илиэто просто ложное срабатывание, так как я вижу, что другие случаи этого предупреждения были неверными.