0

我正在使用 Emberfire 进行身份验证和数据库,并且我能够登录,但之后它不会将我重定向到我当前的用户页面。它还会向我抛出一个错误,说自定义 url 中不存在任何用户,但我的 firebase 控制台向用户显示了我重定向到的正确 id。

这是我的登录控制器:

import Ember from 'ember';

export default Ember.Route.extend({
  beforeModel: function() {
    return this.get('session').fetch().catch(function() {});
  },
  actions: {
    signIn: function() {
      var controller = this.get('controller');
      var email = controller.get('email');
      var password = controller.get('password');
      this.get('session').open('firebase', { provider: 'password', 'email': email, 'password': password}).then(function(data) {
        console.log(data.currentUser);
      });
      let uid = this.get('session').get('uid');
      this.store.findRecord('user', uid).then(user => {
      console.log(user.get('firstName'));
      this.transitionTo('user', uid);
});
    },
    signOut: function() {
      this.get('session').close();
    }
  }
});

这是我的路由器:

Router.map(function() {
  this.route('signup');
  this.route('home', { path: '/' });
  this.route('login');
  this.route('user', { path: '/user/:user_id' });
});
4

1 回答 1

0

您必须等待身份验证完成。这就是它的.then用途。在您当前的代码中,您将在完成身份验证之前uid从.session

这应该有效:

    import Ember from 'ember';

    export default Ember.Route.extend({
      beforeModel: function() {
        return this.get('session').fetch().catch(function() {});
      },
      actions: {
        signIn: function() {
          var controller = this.get('controller');
          var email = controller.get('email');
          var password = controller.get('password');
          var self = this;
          this.get('session').open('firebase', { provider: 'password', 'email': email, 'password': password}).then(function(data) {
            console.log(data.currentUser);
            let uid = this.get('session').get('uid');
            this.store.findRecord('user', uid).then(user => {
            console.log(user.get('firstName'));
            self.transitionTo('user', uid);
          });

    });
        },
    signOut: function() {
      this.get('session').close();
    }
  }
});
于 2016-06-28T02:51:06.907 回答