如何使用MEAN堆栈提交成功的发布请求?
好的,我正在使用yeoman来搭build一个项目。 最后我想学习支架CRUD。 我被卡在一个post请求。 我已经select了angular度全堆发生器,因为我对正常的angular发生器非常舒服。
当我试图向Things集合提交一个新对象时,我的post请求被尝试了400错误。 我很迷路,我需要使用这个文件夹结构看到一个发布请求的完整代码。
更新: 400错误消失,但是,req.body。
更新2:一切正常工作现在答案都在我的代码和答案。
因此, 使用yeoman的angular-fullstack生成器,我将如何发出post请求,以在Mongo db的Thing集合中创build一个awesomeThing。
我肯定错过了一些东西,但是我认为大部分需要使POST请求成功的部分在下面介绍。 任何方向将不胜感激。
应用程序/视图/分音/ main.html中
<div class="row marketing"> <div ng-repeat="thing in awesomeThings"> <h4>{{thing.name}}</h4> <p>{{thing.info}}</p> </div> </div> <form ng-submit="addAwesome()"> <input type="text" ng-model="tempAwesome.name"> <input type="submit" class="btn btn-primary" value="Add"> </form>
应用程序/脚本/控制器/ main.html中
$scope.name = []; $http.get('/api/awesomeThings').success(function(awesomeThings) { $scope.awesomeThings = awesomeThings; }); $scope.addAwesome = function() { $http.post('/api/awesomeThings', $scope.tempAwesome).success(function(postData) { $scope.awesomeThings = postData; }).error(function(postData, status){ console.log(postData); $scope.status = status; console.log(status); }); };
LIB / routes.js
app.route('/api/awesomeThings') .get(api.awesomeThings) .post(api.create);
LIB /控制器/ api.js
mongoose.model('Thing', ThingSchema); exports.create = function (req, res) { var awesomeThing = new Thing(req.body); awesomeThing.save(function(err) { if (err) return res.json(400, err); }); };
LIB /模型/ thing.js
var ThingSchema = new Schema({ name: String, info: String, awesomeness: Number });
我有一个预感它是mongoose阻止这个,因为我的提交不符合架构? ? 任何其他的想法?
编辑
确定最后一个build议是基于查看我拥有的其他代码。 试试这个你的post
$http.post('/api/awesomeThings' { name : $scope.name })
根据代码更改编辑
将您的表单中的ng模型更改为。
<input type="text" ng-model="name">
我认为这条线路是失败的
var awesomeThing = new Thing(req.body);
我认为正在发生的是你正在发送一个像这样的对象在身体
{ tempThing: "sometext" }
当mongoose试图创build你的对象时,它没有一个名为tempThing的属性,所以它被释放出来。 如果你愿意的话,可以通过在你的schema上设置{strict:false}来覆盖它,但是,如果你的意图是从你的表单中设置名字,那么我将以更改tempThing为起点。
老答案
我认为你的/lib/routes.js有一个错字。 你有一个 ';' 之后.get(api.awesomeThings)
这导致.post(api.awesomeThings)被忽略。 删除分号,它可能会开始工作。