使用Torii在Ember中获得当前用户会话的最佳方式

时间:2016-04-20 19:24:00

标签: ember.js firebase ember-data emberfire

我想知道获取当前登录用户的用户模型记录的最佳方法是什么。我正在将torii与相应的firebase适配器结合使用。

应用/托里的适配器/ application.js中

import Ember from 'ember';
import ToriiFirebaseAdapter from 'emberfire/torii-adapters/firebase';

export default ToriiFirebaseAdapter.extend({
  firebase: Ember.inject.service()
});

例如:我有一个客户端模型,此时我有一个非常难看的解决方案来查询与当前登录用户关联的所有客户端记录:

应用/路由/ clients.js

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    var _this = this;
    return this.store.query('user', {
      orderBy: 'email',
      equalTo: this.get('session.currentUser.email')
    }).then(function(user) {
      var myUser = user.get('firstObject');
      return _this.store.query('client', {
        orderBy: 'user',
        equalTo: myUser.id
      }).then(function(client) {
        return client;
      });
    });
  }
});

当然有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以在应用初始化时将currentUser注入所有控制器,路由和组件,这样您只需在任何需要的地方执行this.get('currentUser')即可引用当前用户。请参阅显示如何在此处完成此操作的示例部分:https://guides.emberjs.com/v2.5.0/applications/dependency-injection/