WedX - журнал о программировании и компьютерных науках

AngularJS + Firebase. После выхода старые пользовательские данные все еще существуют. Создание новой учетной записи и старые пользовательские данные заменяются на firebase

Поэтому я следую руководству по приложению thinksters для фэнтези-футбола, но всякий раз, когда я выхожу из системы и пытаюсь создать новую учетную запись. Новая учетная запись создается и заменяет всю информацию о старом пользователе в firebase информацией о новом пользователе.

Я предполагаю, что это проблема области, когда она не очищается при выходе из системы?

'use strict';

/* Services */

angular.module('fantasyApp.services.login', ['fantasyApp.services.profileCreator'])
  .factory('loginService', ['angularFireAuth', 'profileCreator', '$location', '$rootScope',
  function(angularFireAuth, profileCreator, $location, $rootScope) {
  return {
    login: function(email, pass, redirect, callback) {
      var p = angularFireAuth.login('password', {
        email: email,
        password: pass,
        rememberMe: true
      });
      p.then(function(user) {
        if( redirect ) {
          $location.path(redirect);
        }
        callback && callback(null, user);
      }, callback);
    },
    logout: function(redirectPath) {
      angularFireAuth.logout();
      if(redirectPath) {
        $location.path(redirectPath);
        $scope.destroy()
      }
    },
    createAccount: function(name, email, mobile, pass, callback) {
      angularFireAuth._authClient.createUser(email, pass, function(err, user) {
        if(callback) {
          callback(err, user);
          $rootScope.$apply();
        }
      });
    },
    createProfile: profileCreator
  }
}])
01.12.2013

Ответы:


1

Эта проблема связана с этим фрагментом кода в файле app/js/controllers/headercontroller.js.

$scope.$on('angularFireAuth:login', function() { 
    angularFire(new Firebase(FBURL+'/users/'+$scope.auth.id), $scope, 'user'); 
});

Здесь происходит следующее: каждый раз, когда angularFireAuth:login получает $broadcast'd, мы подключаем $scope.user к ссылке Firebase, расположенной по адресу FBURL+'/users/'+$scope.auth.id. Теперь проблема в том, что если вы выйдете из системы, а затем войдете снова, angularFireAuth:login дважды получит $broadcast. Это не было бы проблемой, за исключением того факта, что мы запускаем angularFire в обратном вызове. В результате у нас теперь есть два angularFire, привязанных к $scope.user. Это означает, что если $scope.user изменится, мы будем писать в две отдельные ссылки Firebase.

Если мы прикрепим angularFire к $scope.user и, например, $scope.user установим значение {name: "Tyler"}, то при выходе из системы и повторном входе текущее значение $scope.user будет записано в новое angularFire, которое привязано к другому пути пользователя. Это приводит к такому странному поведению перезаписывания учетной записи.

В любом случае, решение состоит в том, чтобы использовать метод disassociate(), передаваемый при разрешении промиса angularFire.

Например, попробуйте это.

$scope.$on('angularFireAuth:login', function() { 
  if ($scope.disassociateUserData) { 
      $scope.disassociateUserData();
  } 
  angularFire(new Firebase(FBURL+'/users/'+$scope.auth.id), $scope, 'user').then(function (disassociate) { 
      $scope.disassociateUserData = disassociate; 
  }; 
});
03.12.2013

2

Эй, ребята, у этого проекта git нет тех же проблем, что и у нас, поэтому я собираюсь следовать его коду в качестве примера и попытаться выяснить, что мы делаем неправильно.

https://github.com/mattmalenczak/angularfire-login-boilerplate

Обновление: НАШЕЛ!

https://github.com/mattmalenczak/angularfire-login-boilerplate/blob/master/js/controllers.js

disassociate();

Она находится в функции в строке 63, но функция вызывается в строке выхода из системы 31!

03.12.2013
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]