2017-04-05 87 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); 
     }); 
};