Ben*_*eds 5 forms post node.js express angularjs
我正在尝试对我创建的 RESTful API 进行简单的 POST 调用。我使用 Angular 作为客户端,nodejs 作为服务器,mongodb+express+ multer作为数据库。
当使用POSTman测试后端时,对象被正确创建,从 req.body 获取数据。在我的 Angular 控制器的 createProject 方法中,我在发布到 API 之前打印出我的 formData。表单数据看起来正确。当正确的表单数据被发布到工作服务器时,req.body 显示为空。
这是我的相关服务器代码:
app.use(express.static(__dirname + '/public'));
app.use(multer({ dest: 'public/uploads/'}));
router.route('/projects') // accessed at //localhost:8080/api/projects
.post(function(req, res) {
console.log(req.body); // returns empty set
var project = new Project();
project.name = req.body.name;
project.description = req.body.description;
project.newComments = 0;
project.newPosts = 0;
//project.imageURL = req.body.imageURL;
project.save(function(err) {
if (err)
res.send(err);
Project.find(function(err, projects) {
if (err) res.send(err);
res.json(projects);
});
});
})
app.use('/api', router);
Run Code Online (Sandbox Code Playgroud)
这是我的相关角度代码:
$scope.createProject = function() {
console.log($scope.formData); // returns correct **{name: "adawda", description: "dawdaw"} **
$http.post('/api/projects', $scope.formData)
.success(function(projectData) {
$scope.formData = {};
$scope.imageURL = "";
$scope.projects = projectData;
console.log(projectData);
})
.error(function(projectData) {
console.log('Error: ' + projectData);
});
};
Run Code Online (Sandbox Code Playgroud)
这是我的相关 HTML 代码:
<input type="text" placeholder="name of project" ng-model="formData.name" />
<input type="text" placeholder="description" ng-model="formData.description" />
<button type="submit" class="button" ng-click="createProject()">Create Project</button>
Run Code Online (Sandbox Code Playgroud)
问题:
Angular 如何将数据从 $scope.formData 传递到请求,为什么它与我的服务器配置不兼容?我很确定这与我的 POST 中的内容类型以及它与 multer 的关系有关。
谢谢你的时间!