2015-06-28 2 views
0

Я пытаюсь удалить вложенный объект, но по какой-то причине я делаю что-то неправильно, поскольку кажется, что я не могу получить доступ к вложенному объекту. Я могу удалить объекты, которые не вложены.Попытка удалить вложенный объект в mongoose

Вот мой код

Json:

{ 
    "_id": ObjectId("55904d2da35bf71c06184f60"), 
    "title": "h1", 
    "url": "h1", 
    "menuIndex": NumberInt(0), 
    "date": ISODate("2015-06-28T21:12:38.256Z"), 
    "contents": [ 
    { 
     "order": NumberInt(0), 
     "data": "something", 
     "_id": ObjectId("55904d38a35bf71c06184f62") 
    }, 
    { 
     "order": NumberInt(1), 
     "data": "not something", 
     "_id": ObjectId("55904d49a35bf71c06184f63") 
    } 
    ], 
    "__v": NumberInt(0) 
} 

Api:

router.post('/content/delete/:id/:contentId', sessionCheck, function(req,res) { 
    var id = req.body._id; 
    var contentId = req.body._id; 
    Page.update({ 
     _id: id 
    }, { 
     $pull: {'contents': { 
      _id: contentId    
     }}}, 
     function(err){ 
      if(err) 
       return res.send(err); 
     } 
    ); 
}); 

Фабрика:

.factory('pagesFactory', ['$http', 
    function($http) { 

    return { 
     deleteContent: function(id,contentId) {   
      return $http.post('/api/content/delete/'+ id + '/' + contentId); 
     } 

    }; 
    } 
]) 

Контроллер:

$scope.deleteContent = function(id,contentId) { 
    pagesFactory.deleteContent(id,contentId); 
}; 

HTML:

<div ng-repeat="data in pageContent.contents track by data.order"> 
    <button class="btn btn-success" ng-click="deleteContent(pageContent._id,data._id)">Delete</button> 
    <div ng-bind-html="trustAsHtml((data.data))"> 
    </div> 
</div> 
+0

Где ваша функция для удаления вложенного объекта? – geckob

+0

Если я правильно понимаю это, вы пытаетесь удалить ключевое значение содержимого? – geckob

+0

да точно. Но не все только те, которые соответствуют contentId.And функция находится на моей фабрике. –

ответ

2

Оба id и contentId передаются как URL Params не POST тело. Поэтому правильный код:

var id = req.params.id; // not req.body._id 
var contentId = req.params.contentId; // not req.body._id 
Page.update({ 
    _id: id 
}, { 
    $pull: {'contents': { 
     _id: contentId    
    }}}, 
    function(err){ 
     if(err) 
      return res.send(err); 
    } 
); 
Смежные вопросы