2016-08-26 5 views
0

Я пытаюсь заставить пользователя зарегистрироваться, работая над моим приложением ember, используя firebase в качестве backend. Я использую дополнение torii для аутентификации пользователей и просто пытаюсь проверить его. Однако, когда я пытаюсь зарегистрироваться пользователя, я получаю следующую ошибку: Uncaught TypeError: n.default is not a constructorember.js и firebase - не удалось зарегистрировать пользователя

Это как мой маршрут выглядит на routes/index.js:

import Ember from 'ember'; 
import Firebase from 'firebase'; 

export default Ember.Route.extend({ 
    actions: { 
    signUp: function(){ 
     var controller = this.get('controller'); 
     var firstName = controller.get('firstName'); 
     var lastName = controller.get('lastName'); 
     var email = controller.get('email'); 
     var password = controller.get('password'); 
     var ref = new Firebase("https://my-app-name.firebaseio.com"); 
     var _this = this; 

    ref.createUser({ 
     email : email, 
     password : password 
     }, 
     function(error, userData){ 
     if (error) { 
      alert(error); 
     } else { 
      _this.get('session').open('firebase', { 
      provider: 'password', 
      'email': email, 
      'password': password 
      }).then(function(){ 
      var user = _this.store.createRecord('user', { 
       id: userData.uid, 
       firstName: firstName, 
       lastName: lastName 
      }); 

      user.save().then(function(){ 
       _this.transitionTo('protected'); 
      }); 
      }); 
     } 
     }); 
    } 
    } 
}); 

Мой шаблон на templates/index.hbs:

Signup here: <br> 

{{input type="text" value=firstName placeholder="First Name"}}<br> 
{{input type="text" value=lastName placeholder="Last Name"}}<br> 
{{input type="text" value=email placeholder="Email"}}<br> 
{{input type="password" value=password placeholder="Password"}}<br> 
<button {{action "signUp"}}> Sign Up </button> 

и мой пользовательская модель:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    firstName: DS.attr(), 
    lastName: DS.attr() 
}); 

Я действительно не знаю, где я ошибаюсь. Я в значительной степени следовал этому руководству: http://vikram-s-narayan.github.io/blog/authentication-with-ember-and-firebase-part-2/, за исключением того, что я просто сосредоточен на регистрации и помещаю все это в индекс для простоты.

ответ

0

Проблема была в использовании Firebase 3.0 SDK, но с использованием кода для предыдущей версии. Переместил код в мой контроллер и обновил его, чтобы использовать createUserWithEmailAndPassword:

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    firebaseApp: Ember.inject.service(), 

    actions: { 
     signUp() { 
     const auth = this.get('firebaseApp').auth(); 
     auth.createUserWithEmailAndPassword(this.get('email'), this.get('password')). 
     then((userResponse) => { 
      const user = this.store.createRecord('user', { 
      id: userResponse.uid, 
      email: userResponse.email 
      }); 
      return user.save(); 
     }); 
     } 
    } 

}); 
Смежные вопросы