узел js - как удалить определенные данные _id из массива - PullRequest
0 голосов
/ 26 ноября 2018

это моя функция удаления route.js

router.delete("/qus/:id/answers/:answersId", function(req, res) {
        Forum.findOneAndUpdate({ _id: req.params.id }, {
                $pull: {
                    "answers" : { "answers._id": req.body.answersId }
                }
            }, { safe: true, multi: true },
            function(err,result) {
                if (err) {
                    console.log(err);
                    res.json({msg:"somethong went wrong"})
                }
                else {
                   res.json({msg:"success"});
                  // res.redirect("/qus/" + foundAnimal._id + "/answers");
                }
            });
    });

мой API выглядит как

{
  "success": true,
  "forums": [
    {
      "createdAt": "2018-11-26T05:26:37.829Z",
      "likes": 0,
      "likedBy": [],
      "dislikes": 0,
      "dislikedBy": [],
      "_id": "5bfb84776cd9ea0ebc3db87b",
      "title": "how to apply visa",
      "body": "student visa requirement
      "qus_comments": [],
      "answers": [
        {
          "createdAt": "2018-11-26T06:59:21.840Z",
          "likesAnswer": 0,
          "likedAnswerBy": [],
          "dislikesAnswer": 0,
          "dislikedAnswerBy": [],
          "_id": "5bfb99eb21a1911650eba0d9",
          "content": "asdfghjk",
        },
        {
          "createdAt": "2018-11-26T06:59:21.840Z",
          "likesAnswer": 0,
          "likedAnswerBy": [],
          "dislikesAnswer": 0,
          "dislikedAnswerBy": [],
          "_id": "5bfb99f321a1911650eba0da",
          "content": "refersadfghj",
        }
      ],
      "__v": 13
    }
  ]
}

моя функция удаления работает, эта функция удаляет весь массив ответов, но я хочу удалить любойконкретный идентификатор в этом массиве ответов.Помогите мне, пожалуйста.я не знаю, как реализовать это.если кто-нибудь знает, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 26 ноября 2018

Вам нужно использовать answers._id напрямую, когда вы используете $pull для данной структуры данных:

Forum.findOneAndUpdate({_id: req.params.id}, {
  $pull: {"answers._id": req.body.answersId}
 },{ safe: true, multi: true },
 function(err,result) {
  if (err) {
      console.log(err);
      res.json({msg:"somethong went wrong"})
  }
  else {
     res.json({msg:"success"});
    // res.redirect("/qus/" + foundAnimal._id + "/answers");
 }
});

В некоторых случаях может быть из-за разницы в версии mongodb, ниже работает:

Forum.findOneAndUpdate({_id: req.params.id}, {
  $pull: {"answers" : {"_id": req.body.answersId} }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...