如何在mongoose + nodejs + express中删除一个subdoc

时间:2015-01-28 13:58:43

标签: node.js mongodb mongoose subdocument

如何删除名为task的子网?父模式是User,子模式名为Task。

这是我的路线:

app.delete('/api/tasks/:id', isAuthenticated, function (req, res) {

  User.update({ 'task._id': req.params.id }, { $pull: { 'task.$.id': req.params.id }},
    (function(err, user) {
        if(!err) {
          console.log("Deleted Task" ),
          res.redirect('/home');
        } 
    })
  );
});

还有一点ajax:

// Delete 
$(document).ready(function() {

  $('.task-delete').click(function(event) {
    $target = $(event.target)
    $.ajax({
      type: 'DELETE',
      url: apiDeleteTask + $target.attr('data-task-id'),
      success: function(response) {
        $target.parent.children.id(id).remove();
        $alert.trigger('success', 'Task was removed.');
      },
      error: function(error) {
        $alert.trigger('error', error);
      }
    })
  });
})

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

$ pull运算符在这里不起作用,因为它只适用于数组,'task._id'不是数组,而是数组中的字段。

在这里阅读更多内容: http://docs.mongodb.org/manual/reference/operator/update/pull/#up._S_pull