无法将AngularJS的对象传递给Web后端

时间:2017-01-08 07:31:39

标签: javascript angularjs node.js mongodb

标题说明了一切。我是新手,所以我确定这一定是一个简单的错误。 这是控制器

    $scope.removeProduct = function(product){
console.log(product._id);
    var inData = new Object();
    inData._id = product._id;
    console.log(inData);
    $http({ url:"/api/deleteprod/", inData, method: "POST"
            }).then(function () {
                        console.log("got here");
                        var index = $scope.vehicles.indexOf(product);
                        $scope.vehicles.splice(index, 1);

            })


};

这是服务器端。

module.exports = function(app, mongoose, config) {

    app.post('/api/deleteprod', function(req, res){
                    console.log("in app post",req);
    var MongoClient = mongodb.MongoClient;
    var url='mongodb://localhost:27017/seedsdev';
});
};

显然我想要的是将_id传递给服务器以便我可以使用它,但是当我输出req时,它大约有50页长,并且没有我想要的信息。在它通过之前,可以看到对象是控制台.log。

我正在做的新手错误是什么?

2 个答案:

答案 0 :(得分:2)

调用$http时,您会传递post数据,其中包含data属性。目前您正在通过inData财产。改为:

$http({ url:"/api/deleteprod/", data: inData, method: "POST" }).then(...)

<强>更新

在服务器端,您需要确保拥有JSON解析中间件,例如来自body-parser的中间件:

app.use(require('body-parser').json())

使用body-parser解析正文后,您将拥有一个带有已解析JSON的req.body属性。

答案 1 :(得分:1)

你遗失的是两件事。

1)@Jacob

建议的邮寄申请中的数据

2)Post param body-parser的解析器。 // npm install body-parser --save 这将帮助您解析节点js中的POST数据。

所以代码看起来像

$scope.removeProduct = function(product){
console.log(product._id);
    var inData = new Object();
    inData._id = product._id;
    console.log(inData);
    $http({ url:"/api/deleteprod/", data: inData, method: "POST"
            }).then(function () {
                        console.log("got here");
                        var index = $scope.vehicles.indexOf(product);
                        $scope.vehicles.splice(index, 1);

            })


};

IN后端

var bodyParser = require('body-parser');
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
   module.exports = function(app, mongoose, config) {

        app.post('/api/deleteprod', function(req, res){
                        console.log("in app post",req.body._id);
        var MongoClient = mongodb.MongoClient;
        var url='mongodb://localhost:27017/seedsdev';
    });
    };