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

伊维卡

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

}

我试过这个,它设法删除了项目,但它没有在团队中的项目数组中删除它。任何人都可以帮忙吗?

内纳德·米洛萨夫列维奇

您正在尝试使用_id属性拉取项目,但这些项目只是ObjectId. 所以,而不是这个:

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

做这个:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章