2017-08-05 97 views
0

所以我在我的API這個請求是由一個叫上一個按鈕按下讀取請求運行:API刪除不更新DB

router.delete('/itemDelete/:id', function(req, res, next){ 
    User.findOne({_id: req.params.id}).then(function(user){ 
    var userTemp = user; 
    var items = user.items; 
    var i = 0; 
    for(i=0; i<items.length; i++){ 
     if(items._id == req.body.itemID){ 
     items.splice(i,1); 
     } 
    } 
    userTemp.items = items; 
    User.findByIdAndUpdate(req.params.id, userTemp, function(err, user){ 
     res.send(user); 
    }); 
    }).catch((err) => console.error(err)); 
}); 

代碼運行並沒有錯誤,但數據庫沒有變化。

回答

0

要刪除,你可以這樣做。但如果改變現狀只有你需要做更新自己張貼的參數要傳遞

User.findOneAndRemove({_id: req.params.id }, function(err){...}) 
+0

這將刪除整個用戶不會嗎?我只想刪除存儲在用戶模型中的項目。 –

1

確保該塊不是錯誤。沒有錯誤檢查,無論err是否爲空。 cmiiw

User.findByIdAndUpdate(req.params.id, userTemp, function(err, user){ console.log("error:",err);res.send(user); }; 
+0

是的,它是空的,但有一個用戶與傳遞的ID是奇怪的。 –

+0

如果內部不可以輸入條件。 items._id是ObjectID,對不對?你可以使用方法.equals,或先用toString()解析 –