我在数据库和每个对象数组描述中有很多对象:[' red',' blue',' green'],我的问题是我无法通过数据库中的id对象找到,因为使用req.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 :(得分: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 /.
的任何冲突路线