为什么AngularFire $ add(用户)方法添加了两次相同的记录?如何使Firebase记录保持独特



我不想让AngularFire继续添加重复记录,我该如何仅添加用户一次,并且如果已经添加了用户数据,则不再添加同一用户。

我有这样的按钮:

<a class="btn btn-block btn-lg btn-success" href="#" ng-hide="auth.user" ng-click="auth.$login('persona')"><span><i class="fa fa-user fa-lg"></i></span>&nbsp;&nbsp;Login with <strong>Persona</strong></a>

我的控制器具有:

var ref = new Firebase("https://mybase.firebaseio.com/");
                        $scope.auth = $firebaseSimpleLogin(ref);
var users = new Firebase("https://mybase.firebaseio.com/users");
                        $scope.uData = $firebase(users);
$scope.auth.$login('persona').then(function(user){
                             var usersArray = orderByPriorityFilter($scope.uData);
                             if (_.contains((_.pluck(usersArray, 'uid')),user.uid) == false){$scope.uData.$add(user)}

                         });

登录用户在登录具有单独控制器后将用户重定向到的部分和部分,如果我尝试将用户数据添加到登录控制器中的数据库(在用户重定向之前),则在数据库中添加了4次相同的用户而不是2。

预先感谢。

$add方法仅应用于创建(并附加)使用时间顺序增量ID的新记录。如果要覆盖(如果尚未存在记录,则创建),则可以使用$ Save或$ SET方法。

$scope.auth.$login('persona').then(function(user){
  var usersArray = orderByPriorityFilter($scope.uData);
  if (_.contains((_.pluck(usersArray, 'uid')),user.uid) == false){
    $scope.uData.$child(user.uid).$set(user);
  }
});

相关内容

最新更新