gpt4 book ai didi

javascript - 尝试使用 Angular 更新 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 10:43:08 25 4
gpt4 key购买 nike

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

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

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

我正在努力让用户订阅他们希望参加的某些事件。上面的模式示例旨在保存与已注册该事件的每个用户关联的 ID 列表。我认为只持有 ID 比持有完整信息更有意义,以防他们决定在以后更改姓名或其他属性(property)。

<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);
};

上面的代码是我开始遇到麻烦的地方。控制台日志显示至少在此 session 中已将正确的信息作为目标,并且数据看起来已更新。然而,在页面刷新时,数据丢失了,当我使用终端检查我的字段时,没有数据。

此外,循环变得有趣。我尝试循环并使用每个用户的 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 repeat 中,但我真的不确定。

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

如果我能得到任何帮助,我将不胜感激。我一直在网上寻求帮助,但我要么没有遇到任何对我有意义的事情,要么我觉得它不适合我的情况。

在此先感谢你们可能提供的任何帮助。

干杯,安德鲁

更新了部分答案

大家好!我能够弄清楚其中的一部分,这是一个大问题。我仍然需要找出我的循环错误,但一次一步。

解决方案如下:

$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 服务。

关于javascript - 尝试使用 Angular 更新 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com