2015-11-11 4 views
2

Я в настоящее время разрабатываю веб-приложение AngularJS/Firebase.AngularJS Firebase Register Form

Я успешно применил аутентификацию Firebase, пользователь может зарегистрироваться и войти в приложение.

Данные пользователя хранятся в пределах Firebase> Login & Раздел Auth - как обычно.

Проблема: у регистрационной формы есть дополнительное поле ввода с надписью Name - как отправить информацию об имени и электронной почте в Firebase> Data?

Я пробовал реализовать две формы, одну для регистрации, затем одну для данных профиля, но в идеале я бы предпочел, чтобы форма обрабатывала все!

Любая помощь/совет помогут массово!

HTML

<form layout="column" ng-submit="authentication.register()"> 
    Register 
    <div class="input-group"> 
     <input class="form-control" ng-model="authentication.user.name" placeholder="Name" type="text"> 
    </div> 
    <div class="input-group"> 
     <input class="form-control" ng-model="authentication.user.email" placeholder="Email" type="email"> 
    </div> 
    <div class="input-group"> 
     <input class="form-control" ng-model="authentication.user.password" placeholder="Password" type="password"> 
    </div> 
    <input class="btn btn-default" type="submit" value="Register"> 
    </form> 

Контроллер

(function(angular, undefined) { 
    "use strict"; 
    var am = angular.module('virtual-fitting'); 
    // Beginning 
    am.controller('authenticationCtrl', function(Auth, $state) { 
    var self = this; 
    self.user = { 
     email: '', 
     password: '' 
    }; 
    self.register = function() { 
     Auth.$createUser(self.user).then(function(user) { 
     self.login(); 
     }, function(error) { 
     self.error = error; 
     }); 
    }; 
    }); 
    // End 
})(angular); 

Сервис

(function(angular, undefined) { 
    "use strict"; 
    var am = angular.module('virtual-fitting'); 
    // Beginning 
    am.factory('Auth', function($firebaseAuth, FirebaseUrl){ 
    var ref = new Firebase(FirebaseUrl); 
    var auth = $firebaseAuth(ref); 
    return auth; 
    }); 
    // End 
})(angular); 

App

am.constant('FirebaseUrl', 'https://virtual-fitting-app.firebaseio.com/'); 
+0

Где ваш код пытается сохранить имя? Не видя этого. Кроме того, сохранение пользовательских профилей [описано в руководстве] (https://www.firebase.com/docs/web/guide/user-auth.html#section-storing). – Kato

ответ

3

ОБНОВЛЕНИЕ: Обновление до Firebase 3.0 API.

Вход Firebase хранится на отдельном сервере, чем в базе данных Firebase.

Вам необходимо сохранить выходные данные на сервере входа в базу данных. Но не сохраняйте пароли.

Попробуйте использовать службу, которая знает, как сохранить пользователей в базе данных Firebase. Ему нужно только использовать обычную библиотеку Firebase, поскольку она не синхронизирует данные, а сохраняет ее только.

Here's a complete JSBin example.

(function(angular) { 
    var config = { 
    apiKey: '<your-api>', 
    authDomain: '<your-auth>', 
    databaseURL: '<your-db>/', 
    storageBucket: '<your-storage>' 
    }; 
    firebase.initializeApp(config);  
    angular 
    .module('virtual-fitting', ['firebase']); 
    .constant('FirebaseUrl', config.databaseURL) 
    .service('Users', UserService) 
    .config(function($firebaseRefProvider, FirebaseUrl) { 
    $firebaseRefProvider.registerUrl({ 
     default: FirebaseUrl, 
     users: FirebaseUrl + 'users' 
    }); 
    }); 


    function UserService($firebaseRef) { 
    this.save = function(user) { 
     $firebaseRef.users.child(user.uid).set(user); 
    }; 
    } 

}(angular));