ember基于经过身份验证的用户

时间:2015-09-18 15:45:27

标签: javascript ember.js ember-simple-auth

我有一个咖啡订购应用程序,我正在尝试将用户连接到他们的商店。

我正在验证用户,然后在基于ember-simple-auth的会话上设置该用户。那部分可以很好地设置session.currentUser属性,但是我想设置一个session.myStore对象,但是我遇到了问题。

现在我正在初始化器中完成所有这些:

// initializers/custom-user.js
export default {
  name: 'current-user',
  before: 'simple-auth',

  initialize: function(container, application) {
    Session.reopen({
      setCurrentUser: function() {
        let appController = container.lookup("controller:application");

        application.deferReadiness();

        if(this.get('isAuthenticated')) {
          let store = container.lookup('store:main');
          let _this = this;

          return store.find('user', 'me').then((user) => {
            // set the current user to be used on the session object
            this.set('currentUser', user);
          }).then(function(){
            // set the store for the current user
            store.find('store', {'user': _this.get('currentUser.id')}).then((data) => {
              console.log(data);
              _this.set('myStore', data);
              application.advanceReadiness();
            });
          })
        }
      }.observes('isAuthenticated')
    });
  }
};

我正在获取数据console.log(data);,但我认为这不是正确的对象。它返回的是类,而不是对象。在其他路由/控制器中,我希望能够返回this.get('session.myStore.id')之类的内容,但session.myStore没有我正在寻找的数据

1 个答案:

答案 0 :(得分:1)

根据documentation,"当时的返回值本身就是一个承诺。第二个,下游'承诺通过第一个承诺履行或拒绝处理程序"的返回值得到解决。然后,从理论上讲,第一个承诺可能被拒绝,用户未被获取,因此_this.get('currentUser.id')未定义。我建议您在第一次console.log调用的处理程序中使用then来检查此内容。