Angularjs MongoDB没有向Mongoose发布任何数据
我正在制作一个具有平均堆栈的应用程序,但在将数据发布到数据库时遇到问题。当我按下submit按钮时,表单数据会被清除,就像帖子成功时应该做的那样,但是当我转到数据库时,会出现一个新文档,其中除了id和u_v之外没有任何内容 没有抛出任何错误,因为有数据被发布到数据库,但页面底部的mongodb文档中没有正确的数据 将数据发布到的表单如下所示:Angularjs MongoDB没有向Mongoose发布任何数据,angularjs,node.js,mongodb,mongoose,mean-stack,Angularjs,Node.js,Mongodb,Mongoose,Mean Stack,我正在制作一个具有平均堆栈的应用程序,但在将数据发布到数据库时遇到问题。当我按下submit按钮时,表单数据会被清除,就像帖子成功时应该做的那样,但是当我转到数据库时,会出现一个新文档,其中除了id和u_v之外没有任何内容 没有抛出任何错误,因为有数据被发布到数据库,但页面底部的mongodb文档中没有正确的数据 将数据发布到的表单如下所示: <input name="userName" type="String" class="form-control" id="userName" ng
<input name="userName" type="String" class="form-control" id="userName" ng-model="formData.userName" placeholder="Your Name">
<input name="game" type="String" class="form-control" id="game" ng-model="formData.game" placeholder="The game?">
<input name="userPoint" type="Number" class="form-control" id="userPoint" ng-model="formData.userPoint" placeholder="Points?">
<button type="submit" class="btn btn-default" ng-click="createScore()">Submit</button>
这是数据库的Mongoose模型:
var Score = mongoose.model("Score", {
userName: String,
game: String,
userPoint: Number
}, "score");
这是my express应用程序的路线。post:
app.post("/api/scores", function(req, res){
Score.create({
userName:req.body.userName,
game:req.body.game,
userPoint:req.body.userPoint
}, function(err, score) {
if (err)
res.send(err);
Score.find(function(err, score) {
if (err)
res.send(err)
res.json(score);
});
});
});
发布数据时,mongodb文件文档如下所示:
{
"_id": {
"$oid": "54cbf3d1fbaaf10300000001"
},
"__v": 0
}
我在想也许名字是错的,比如userPoints和userPoint,但我让sue知道它们都是一样的。另外,我对这方面还不熟悉,所以如果您有任何教程可以帮助具体的主题,请随时与我们分享
编辑1:
我在node.js部分做了一个console.log,上面写着req.body.userName、req.body.game等等。在日志中,它们都是未定义的。我一直在网上寻找解决方案,但似乎找不到解决方案。我曾尝试在HTML文件字符串中创建类型,而不是文本,但这似乎不起作用。有什么想法吗?好的,所以我解决了我的问题 我试图以表单数据的形式发布,而不是以x-www-form-urlencoded的形式发布 在我的core.js中,我将其放在createScore方法中:
$http({
method : 'POST',
url : '/api/scores',
data : $.param($scope.formData),
headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
}).success(function(response){
$scope.formData = {};
$scope.scores = response;
console.log(response);
});
我希望这对别人有帮助 为什么要在创建回调中执行Score.find?因为当我添加新分数时,我希望它自动刷新,而不是用户刷新页面以查看结果。我认为他的观点是find从创建回调返回相同的对象。您可以使用res.jsonscore代替Score.find。另外,您是否已打印了req.body?如果您的属性未定义,您可能没有您认为具有的对象结构。好的,现在这更有意义了。对象结构呢,因为我把所有的东西都命名为相同的。用户名、游戏和用户点在我认为的所有内容中都正确命名:。你能不能更详细一点?谢谢
$http({
method : 'POST',
url : '/api/scores',
data : $.param($scope.formData),
headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
}).success(function(response){
$scope.formData = {};
$scope.scores = response;
console.log(response);
});