我正在尝试使用firebase作为后端让用户注册我的ember应用程序。我正在使用torii插件进行用户身份验证,我只是想测试一下。但是,当我尝试注册用户时,我收到以下错误:Uncaught TypeError: n.default is not a constructor
这是我的路线查看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 :(得分: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();
});
}
}
});