尝试使用Angular更新MongoDB

如何更新MongoDB模式中的数组元素。 我正在使用Mongoose来帮助处理数据操作。

我想更改的模式中的字段如下所示:

players: [ { type : Schema.ObjectId, ref: 'User' } ], 

我正在努力让用户订阅他们希望参加的某些活动。 上面的架构示例旨在保存与注册到事件的每个用户关联的ID的列表。 我认为只要持有身份证,而不是全部的信息,以防他们决定改变他们的名字或其他财产。

 <span ng-click="registerUser(pickupleague._id)" class="btn" ng-hide="registered" data-ng-show="authentication.user"> Register for Game </span> 

上面的代码被设置为处理用户注册的点击事件。 这一切都按预期工作。

 <ul> <li ng-repeat="player in pickupleague.players"> <span>{{getFirstName(player)}}</span> </li> </ul> 

现在这个循环什么都没有返回。 这是我知道我的点击事件不正确写入数据库。 它也会在一分钟内提供一些问题。

 $scope.registerUser = function(id) { var pickupleague = $scope.pickupleague; $scope.registered = true; pickupleague.players.push($scope.authentication.user._id); console.log(pickupleague); }; 

上面的代码是我开始遇到一些麻烦的地方。 控制台日志显示,正确的信息至less在本次会话中被定位,数据看起来像已经被更新。 然而,页面刷新时,数据丢失,当我使用terminal来检查我的领域,没有数据。

更重要的是,循环变得有趣。 我尝试循环,并与每个用户的ID运行调用来获取所需的信息。

 $scope.getFirstName = function (id) { console.log('Got here too! ID is: %s', id); var players = Users.get({ _id: id }); }; 

代码运行控制台日志没有问题,显示正确的ID已被传递。 然而,下一个代码块结束运行,并抛出以下错误。

 Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [] 

根据我读过的内容,我非常肯定我需要在将用户加载到ng重复之前定义我的用户,但我真的不确定。

我也觉得我不能正确地解决这个错误,直到我弄清楚为什么事件注册只是暂时发生,并没有写入数据库。

任何帮助,我可以得到非常感激。 我一直在排队寻求帮助,但是我没有find任何对我有意义的事情,或者我觉得这不适合我的情况。

提前感谢您的帮助,您可能会提供。

干杯,安德鲁

用部分答案更新

嘿大家! 我能弄清楚哪一个是最大的问题。 我仍然需要找出我的循环错误,但一次一步。

解决scheme如下:

 $scope.registerUser = function(id) { $scope.registered = true; $scope.pickupleague.players.push($scope.authentication.user._id); $scope.pickupleague.$update(function() { $location.path('pickupleagues/' + pickupleague._id); }, function(errorResponse) { $scope.error = errorResponse.data.message; }); }; 

我没有意识到推送没有写入数据库,我需要以后运行更新。 学习的乐趣! 希望这会帮助别人惹上麻烦。

你应该检查元素,看看循环产生了什么。 我认为你的getFirstName函数可能有问题。 它不会返回任何东西。

编辑:

 $location.path('pickupleagues/' + pickupleague._id); 

上面的代码片段会将您路由到此位置。 我想你只是想保存这些数据? 尝试查看$ http Angular服务。