首页 > 解决方案 > 我想从猫鼬的数组中删除项目

问题描述

下面的代码用于关注,我希望用户单击另一个按钮并定位此 app.post("/unfollow"...) 以删除关注。在发布路线( app.post("/unfollow"...) )中,我想为取消关注编写代码。我怎样才能做到这一点并转到我在代码中评论的每个子项目____1____, ____2____, ____3____。我需要从每个用户中删除用户。请帮助我..

app.post("/follow", function (req, res) {
  const id = req.body.idFllw;

  User.findById(req.user.id, (err, foundItemsUsers) => {
    // const idUsers = req.user.id;

    Feed.findById(id, (err, foundItemsFollwing) => {
      User.findById(foundItemsFollwing.id, (err, foundItemsFollow) => {
        // add new fllw to Users DB
        // following process ____1____
        const followingModel = new Follwing();
        followingModel.follwing = foundItemsFollwing.profile_name;
        followingModel.id = foundItemsFollwing.id;

        foundItemsUsers.follwing.push(followingModel);
        foundItemsUsers.save();

        // followers process ____2____
        const follwersModel = new Follwers();
        follwersModel.follwers = foundItemsUsers.profile_name;
        follwersModel.id = foundItemsUsers.id;

        foundItemsFollow.follwers.push(follwersModel);
        foundItemsFollow.save();

        // followers on person following ____3____
        const follwersModel_Feed = new Follwers();
        follwersModel_Feed.follwers = foundItemsUsers.profile_name;
        follwersModel_Feed.id = foundItemsUsers.id;

        foundItemsFollwing.follwers.push(follwersModel_Feed);
        foundItemsFollwing.save();
      });
      //redirect to specific post
      res.redirect("/#" + id);
    });
  });
});

用户数据库:

  lights: '12',
  s3_profile: 'x',
  _id: 612dfb70f680fa26e48e1719,
  username: 'x',
  profile_name: 'x',
  des: 'x',
  follwers: [
    {
      _id: 612e1136bae81200049afab2,
      follwers: 'Matei',
      id: '612dfcdaca18b0298c88a7f7'
    },
    {
      _id: 612e1137bae81200049afac3,
      follwers: 'Matei',
      id: '612dfcdaca18b0298c88a7f7'
    }
  ],
follweing: [
    {
      _id: 612e1136bae81200049afab2,
      follwers: 'Matei',
      id: '612dfcdaca18b0298c88a7f7'
    },
    {
      _id: 612e1137bae81200049afac3,
      follwers: 'Matei',
      id: '612dfcdaca18b0298c88a7f7'
    }
  ],
  __v: 20
}

标签: javascriptnode.jsmongoose

解决方案


如果你想从数组中删除项目,例如你想从数组中删除follweing具有id612dfcdaca18b0298c88a7f7

User.findByIdAndUpdate(
   _id,
   {$pull:{follweing:{id:"612dfcdaca18b0298c88a7f7"}}},
   {multi:true}
)

你可以添加另一个检查{$pull:{follweing:{id:"612dfcdaca18b0298c88a7f7",followers:"Matei"}}}


推荐阅读