从嵌套数组中删除对象失败

5anewei6  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(244)

一个团队有很多项目。我正试图删除一个项目,所以我也需要在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});
}

}
我尝试过这个方法,它成功地删除了项目,但在团队中的项目数组中没有删除它。有人能帮忙吗?

jmp7cifd

jmp7cifd1#

您正在尝试使用 _id 属性,但这些项只是 ObjectId . 因此,与此相反:

{ $pull: { marcsEquipa: { _id: req.params._id }}}

这样做:

{ $pull: { marcsEquipa: req.params._id }}

相关问题