Не удалось удалить объект из вложенного массива

#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. Большое вам спасибо!! Вот и все!