2017-04-05 83 views
0

我无法删除作为MongoDB模型属性的数组内部的元素。 请记住这是一个模块的NodeJS mongooseJS,而不是真正的MongoDB这样的功能是不一样的..如何删除元素在MongoDB属性的数组与MongooseJS?

目标:删除对象从statusLiked阵列。 | 我也确认了status.id的值是正确的。

型号:

Const userSchema = new mongoose.Schema({ 
    myStatus: Array, 
    statusLiked: Array, 
)}; 

删除: 1.删除状态(作品)。 2.从User.statusLiked中删除状态(不工作)。

exports.deleteStatus = (req, res, next) => { 
    var CurrentPost = req.body.statusid; // sends in the status.id 
    Status.remove({ _id: CurrentPost }, (err) => { 
    if (err) { return next(err); } 
    // vvvv this vvv 
    User.update({id: req.user.id}, { $pullAll: {_id: CurrentPost }, function(err) { console.log('error: '+err) } }); 

    req.flash('success', { msg: 'Status deleted.' }); 
    res.redirect('/'); 
    }); 

}; 

会发生什么情况:将从数据库中删除特定状态(对象)。但状态仍然保留在User.statusLiked数组中。

我想要发生的事情:要从User.statusLiked数组中删除的状态以及要从数据库中删除的状态。然后,重新加载页面并显示通知。

回答

0

我得到它以某种方式工作。工作代码:

exports.deleteStatus = (req, res, next) => { 
    var CurrUser = req.body.userid; 
    var CurrentPost = req.body.post; 
    Status.remove({ _id: CurrentPost }, (err) => { 
    if (err) { return next(err); } 
    console.log('meeee'+CurrentPost+'user: ' +CurrUser); 
    req.flash('success', { msg: 'Status deleted.' }); 
    res.redirect('/'); 
    }); 
User.update( 
     { _id: new ObjectId(CurrUser)}, 
     { $pull: { myStatus : { _id : new ObjectId(CurrentPost) } } }, 
     { safe: true }, 
     function (err, obj) { 
     console.log(err || obj); 
     }); 
};