我开始学习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: {}
,这当然不是什么我想要。我意识到这可能不够详细,但我在哪里可能会出错?
答案 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
});