2017-07-25 126 views
0

我想使用一個清單從集合中選擇位置並將它們存儲到名爲ToDelete的數組中:[{_id:String}]。有了這個數組,我想運行一個Collections對象的內部位置並將其刪除。如何刪除幾個嵌套對象使用ToDeleteItems數組

我將集合ID存儲爲參數,將數組存儲爲主體。我有控制檯記錄數組,所以我知道它有我想刪除的ID,並正確地將它們傳遞給服務。

我的服務器端函數應該用貓鼬看起來像什麼?這是我最好的嘗試。

//DELETE COLLECTION LOCATIONS 
collectionRouter.post('removeLocation/:id', function(req, res, next) { 
    Collection.update(
    {_id: req.params.id}, 
    {$pull: {locations: {_id: {$in:req.body}}}}, 
    function (err, result) { 
     if (err) { 
     return res.status(500).json({ 
      title: 'An error occured', 
      error: err 
     }); 
     } 
     res.status(201).json({ 
     message: 'Locations Removed', 
     obj: result 
     }); 
    }); 
}); 

這裏是我的Collection.Service

removeCollectionLocation(collection: Collection, locations: string[]) { 
    let body = locations; 
    const headers = new Headers({ 
     'Content-Type': 'application/json'}); 
    const token = localStorage.getItem('token') 
     ? '?token=' + localStorage.getItem('token') 
     : ''; 
    return this.http.post('http://localhost:3000/collection/removeLocation/' + collection._id + token , body, {headers: headers}) 
     .map((response: Response)=> response.json()) 
     .catch((error: Response)=> Observable.throw(error.json())); 
    } 

謝謝大家。

+0

這是okie,觀察沒有問題的功能之上。 – hardy

+0

:( main.bundle.js:576類型錯誤:error.json不是一個函數 在CatchSubscriber.selector 並返回的200代碼是沒有的代碼的我已經提供 –

+0

是的,但你可以使用響應.json({isSuccess:false,err:err})用於記錄錯誤部分而不會崩潰你的函數 – hardy

回答

0

你可以做這樣的事情 -

removeCollectionLocation(collection: Collection, locations: string[]) { 
    let body = locations; 
    const headers = new Headers({ 
     'Content-Type': 'application/json'}); 
    const token = localStorage.getItem('token') 
     ? '?token=' + localStorage.getItem('token') 
     : ''; 
    return this.http.post('http://localhost:3000/collection/removeLocation/' + collection._id + token , body, {headers: headers}) 
     .map((response: Response)=> response.json()) 
     .catch(error => Observable.of(`Bad Promise: ${error}`)); 
    } 
+0

事實證明我需要一個'/'在我的路線之前。 –

相關問題