如果params是数组中的项目,如何通过数据库中的id对象查找

时间:2017-07-19 20:28:02

标签: angularjs node.js mongoose

我在数据库和每个对象数组描述中有很多对象:[' 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:' ...'一切都很糟糕

1 个答案:

答案 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 /.

的任何冲突路线