angular.js http.POST不包含任何数据

时间:2016-06-25 15:11:28

标签: javascript angularjs node.js

我开始学习MEAN堆栈,所以道歉这是一个愚蠢的问题。我正在为我自己的项目调整一些教程,并且我已经为一个书籍数据库做了一个简单的REST api。

// add book and return updated list
app.post('/api/books', function(req, res) {
    console.log("New book: ", JSON.stringify(req.body, null, 4));
    Book.create({
        title: req.body.title,
        author: req.body.author,
        pageCount: 100,
    }, function(err, book) {
        if (err)
            res.send(err);

        // get and return updated list
        Book.find(function(err, books) {
            if (err)
                res.send(err);
            res.json(books);
        });
    });
});

我正在尝试使用angular来与此接口,如下所示:

$scope.createBook = function() {
    console.log('Trying to create ', $scope.formData);
    $http({ method: 'POST', url: '/api/books', data: $scope.formData}).then(function (response) {
        $scope.formData = {};   // reset form
        console.log('CREATE Success: ', response);
    }, function (error) {
        console.log('CREATE Error: ', error);
    });
};

我从createBook - 函数获得的输出是Trying to create – {title: "amazingTitle", author: "amazingAuthor"},它应该是,但API处理程序的输出是New book: {},这当然不是什么我想要。我意识到这可能不够详细,但我在哪里可能会出错?

2 个答案:

答案 0 :(得分:1)

结果是身体解析器设置出错,我只设置应用程序使用urlencoded,而不是json。

答案 1 :(得分:-2)

JSON.stringify()您的数据。

c.f。 AngularJS - $http.post send data as json

我的POST调用通常采用以下形式:

$http({method: 'POST', url: url, headers: headers, data: JSON.stringify(request)}).then(function(response) {
        var data = response.data;
        // do something
    }, function(error) {
        // do something
    });