#javascript #mongodb #mongoose
Вопрос:
У команды много проектов. Я пытаюсь удалить проект, и поэтому мне тоже нужно удалить его в marcsEquipa [].
СХЕМА КОМАНДЫ
const EquipaSchema = new mongoose.Schema({
trab1: {
type: Schema.Types.ObjectId,
required: true,
ref: 'Trab'
},
trab2: {
type: Schema.Types.ObjectId,
required: true,
ref: 'Trab'
},
trab3: {
type: Schema.Types.ObjectId,
required: true,
ref: 'Trab'
},
teamName: {
type: String,
required: true
},
marcsEquipa: [{
type: Schema.Types.ObjectId,
ref: 'Marcacao'
}]
},
{collection: 'Equipas'})
Функция Удаления Проекта
exports.deleteMarc = async (req,res) => {
console.log("Deleting Project..");
console.log(req.params._id);
console.log(req.params.equipa);
try{
console.log("1");
const equipa = await
Equipas.updateOne({ _id: req.params.equipa}, { $pull: { marcsEquipa: { _id: req.params._id}}}, { multi: true });
equipa.save();
console.log("1");
//await Marcacao.deleteOne({_id: req.params._id});
res.status(200).json();
console.log("1");
}catch(err) {
res.status(400).json({message: err});
}
}
Я попробовал это, и ему удается удалить проект, но он не удаляет его в массиве проектов в команде. Кто-нибудь может помочь?
Ответ №1:
Вы пытаетесь извлечь элемент со _id
свойством, но элементы-это просто строковое представление ObjectId
. Итак, вместо этого:
{ $pull: { marcsEquipa: { _id: req.params._id }}}
сделай это:
{ $pull: { marcsEquipa: req.params._id }}
Комментарии:
1. Большое вам спасибо!! Вот и все!