如何从猫鼬模型中的数组中删除对象

诺阿杜布斯

我试图删除猫鼬数组中的多个对象。我的锻炼模型如下所示:

{
  _id: 5e04068491a2d433007026cd,
  exercises: [
     { _id: 5e0401b9dda7ea28a70e99ed, reps: '1', sets: '3' },
     { _id: 5e0401cadda7ea28a70e99ee, reps: '1', sets: '3' },
     { _id: 5e0401dbdda7ea28a70e99ef, reps: '1', sets: '3' }
   ]
}

我有一个ID数组,名为DeletedExercises,这些是我要从练习列表中删除的对象的ID。我试图遍历DeletedExercise并删除所有与DeletedExercise项目的ID相匹配的练习。

router.put("/:workoutId", (req, res)=>{
  deletedOnes = req.body.exerciseId
    deletedExercises = []
    if(typeof deletedOnes === 'object'){
        deletedOnes.forEach(item => {
            deletedExercises.push(item)
        })
    } else {
        deletedExercises.push(deletedOnes)
    }
    deletedExercises.forEach(item => {
      Workout.findByIdAndUpdate( req.params.workoutId, 
        { $pull: { exercises: { _id: item} } } )
});

苏莱曼·萨

您可以像这样简单地使用$in内部运算符删除练习$pull

router.put("/:workoutId", (req, res) => {
  console.log(req.body.exerciseId); //[ '5e05c5306e964f0a549469b8', '5e05c5306e964f0a549469b6' ]

  Workout.findByIdAndUpdate(
    req.params.workoutId,
    {
      $pull: {
        exercises: {
          _id: {$in: req.body.exerciseId}
        }
      }
    },
    { new: true }
  )
    .then(doc => {
      res.send(doc);
    })
    .catch(err => {
      console.log(err);
      res.status(500).send("Error");
    });
});

假设我们有3个练习进行此锻炼:

{
    "_id": "5e05c5306e964f0a549469b5",
    "exercises": [
        {
            "_id": "5e05c5306e964f0a549469b8",
            "reps": 8,
            "sets": 4
        },
        {
            "_id": "5e05c5306e964f0a549469b7",
            "reps": 10,
            "sets": 3
        },
        {
            "_id": "5e05c5306e964f0a549469b6",
            "reps": 12,
            "sets": 2
        }
    ],
}

如果我们要删除练习,5e05c5306e964f0a549469b8并且5e05c5306e964f0a549469b6对于本次5e05c5306e964f0a549469b5锻炼,我们可以使用此正文发送一个PUT请求:(URL必须以这样的结尾http://.../5e05c5306e964f0a549469b5

{
    "exerciseId": [
        "5e05c5306e964f0a549469b8",
        "5e05c5306e964f0a549469b6"
    ]
}

响应将是:

{
    "_id": "5e05c5306e964f0a549469b5",
    "exercises": [
        {
            "_id": "5e05c5306e964f0a549469b7",
            "reps": 10,
            "sets": 3
        }
    ]
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从猫鼬中删除模型?

来自分类Dev

如何从猫鼬的数组中删除元素

来自分类Dev

无法使用$ pull(猫鼬)删除用户模型数组中的对象

来自分类Dev

如何创建对象的猫鼬模型数组?

来自分类Dev

从猫鼬数组中按ID删除对象

来自分类Dev

如何使用猫鼬按特定值从数组中删除对象

来自分类Dev

请求对象中的MEANJS猫鼬模型

来自分类Dev

猫鼬-获取模型中数组的长度

来自分类Dev

如何从猫鼬返回的对象中删除属性

来自分类Dev

在猫鼬中复制数组中的对象

来自分类Dev

猫鼬:如何自动删除数组中的旧条目?

来自分类Dev

如何在猫鼬中按对象数组查找?

来自分类Dev

猫鼬如何在数组中查找对象

来自分类Dev

我如何使用数组中的对象创建架构?猫鼬

来自分类Dev

如何在猫鼬中创建多个对象数组?

来自分类Dev

如何使用猫鼬从数组字段中获取特定对象

来自分类Dev

如何在猫鼬中按对象数组查找?

来自分类Dev

猫鼬从对象中删除属性

来自分类Dev

从参考数组中删除项目(猫鼬)

来自分类Dev

猫鼬删除数组中的项目

来自分类Dev

猫鼬:无法从数组中删除项目

来自分类Dev

在猫鼬数组中搜索对象

来自分类Dev

在猫鼬模式中嵌套对象数组

来自分类Dev

如何在猫鼬模型中更改数组内对象内部的单个值并将其保存?

来自分类Dev

如何在猫鼬模型内部的数组中找到对象?

来自分类Dev

如何删除猫鼬中的子文档?

来自分类Dev

如何访问猫鼬中的对象属性?

来自分类Dev

如何从猫鼬中检索对象值

来自分类Dev

当对象属性位于数组中时,使用猫鼬删除或查找对象