2017-07-19 22 views
0

我在數據庫和每個對象數組描述中有很多對象:['red','blue','green'],我的問題是'噸通過在數據庫ID對象發現,因爲使用req.params我發現對象陣列 工廠:如何通過數據庫中的id對象查找如果params是數組中的項目

userFactory.deleteDescription = function(description) { 
    return $http.delete('/api/editProduct/' + description) 
} 

API

router.delete('/editProduct/:description', function(req, res){ 
    var editProduct = req.params.id; 
     Product.findOneAndUpdate({ _id: editProduct }, { $pull: { description: req.params.description }}, function(err, product){ 
      if(err) throw err; 
      if(!product){ 
       res.json({ success: false, message: 'no product' }); 
      } else { 
       product.update(function(err){ 
        if(err){ 
         console.log(err); 
        } else { 
         res.json({ success: true, message: 'ok!'}) 
        } 
       }); 
      } 
     }); 
}); 

控制器

app.removeDescription = function(description){ 
    User.deleteDescription(description).then(function(data){ 
     if(data.data.success) { 
      console.log('removed') 
     } else { 
      app.showMoreError = data.data.message; 
      console.log('bad') 
     } 
    }) 
} 

Quesstion:如何使用req.params.description正確獲取_id對象我從數組中獲取項目?如果我手動寫_id:'...'一切都很好

回答

0

對不起,讓我再試一次。 req.params包含指定的路由參數,它始終是字符串。如果我理解正確,則希望找到具有相應說明的對象並刪除說明。但是,您無法將數組傳遞到return $http.delete('/api/editProduct/' + description)。因此,您可以將其作爲參數傳入,並使用帶描述的findOneAndUpdate方法作爲過濾器,而不需要_id。因此,它可能是這樣的

userFactory.deleteDescription = function(description) { 
    return $http.delete('/api/editProduct/', description) 
} 

router.delete('/editProduct/', function(req, res){ 
    Product.findOneAndUpdate({ description: req.body }, { $pull: { description: req.body }}, function(err, product){ 
     if(err) throw err; 
     if(!product){ 
      res.json({ success: false, message: 'no product' }); 
     } else { 
      product.update(function(err){ 
       if(err){ 
        console.log(err); 
       } else { 
        res.json({ success: true, message: 'ok!'}) 
       } 
      }); 
     } 
    }); 
}); 

確保你沒有任何衝突的路線/ editProduct /。

+0

是的,但req.body._id是undefined –

+0

@ V.R是的,對不起。我用一些更好的信息更新了我的答案。 – John

+0

這意味着在工廠我只能使用一次'/ api/editProduct /'? –

相關問題