2015-12-16 31 views
5

的數組中刪除的ObjectId我有一個這樣的對象ID: ["56153e4c2040efa61b4e267f","56033932efefe0d8657bbd9e"] 要保存在我的模型信息使用:從OBJECTID

items: [{ 
    type: mongoose.Schema.Types.ObjectId, 
    ref: 'Items' 
}] 

我想要做的就是拉一個元素的數組,它等於我從​​前端發送的刪除請求中的objectId。

我正在使用的代碼:

_.remove(unit.items, request.params.itemId); 

我使用lodash庫。

我想這個問題是數組有ObjectId元素,我試圖比較一個字符串是request.params.itemId。

+0

你是想從一個數組中刪除陣列,或者你有文件的數組,你想刪除一個符合req.params.itemId? – steezeburger

回答

2

我有一個非常類似的設置與「事件」對象有一個「分配」對象數組保存爲ObjectIds數組。我可以簡單地使用

obj.arrayField.remove(idToRemove); 

這是我刪除路由處理程序內的相關代碼:

var id = req.assignment._id; 
req.event.assignments.remove(id); 
req.event.save(function(err, event) { 
    //etc 
} 

這是否對你的工作?

unit.items.remove(request.params.itemId); 
+0

感謝@MosheKarmel,偉大的工作,現在如果我想有所作爲讓我說我有一個數組oldItems = [「56153e4c2040efa61b4e267f」,「56033932efefe0d8657bbd9e」]和另一個數組newItems = [「56033932efefe0d8657bbd9e」],我試圖使用像這樣的lodash差異函數,_.difference(oldItems,newItems),但結果是[「56153e4c2040efa61b4e267f」,「56033932efefe0d8657bbd9e」]。我錯過了什麼? – Diego

+0

我不確定,我真的不知道lodash :(如果我回答這個問題,你可以標記我的答案是正確的嗎?你可以試試這個問題作爲一個新問題... –

+0

好的,謝謝@moshe – Diego

1

您需要將字符串傳遞到mongoose.Types.ObjectId('')得到一個實際的對象,你可以比較反對。

所以_.remove(unit.items, mongoose.Types.ObjectId(req.params.itemId));