使用rails或ember从外部api缓存数据?

时间:2014-04-02 06:05:53

标签: ruby-on-rails api postgresql caching ember.js

我有一个带有三个主要模板的Ember / rails应用程序,Home,Contacts和Payments。联系人和付款模板都需要一系列联系人。需要从外部api填充此数组。目前,对于每次我要访问此模板时的联系人,外部api正在被攻击。理想情况下,当用户首次登录时,我想异步点击api,抓取一次这个数据,并且可以在不需要外部api的情况下再参考它。

使用rails我可以轻松地为用户添加带有postgres json列的has_one:contacts_list,并在切换模板时有条件地在需要时刷新它。我很好奇在ember中处理这个问题的最佳方法。

2 个答案:

答案 0 :(得分:1)

我在路由上使用setupController方法来执行此类缓存。只需检查内容是否已经可用,只有在内容不存在时才加载。像这样:

App.ContactsRoute = Ember.Route.extend({
  setupController : function(controller,model){
    if(!controller.get('content')){
      this.store.find('contact').then(function(contacts){
        controller.set('content',contacts)
      });
    }
  }
});

答案 1 :(得分:1)

您应该为“联系人”创建DS.Model,并在“联系人和付款”模型上使用has_many。然后,您可以指定'async:true',如

DS.hasMany('contact', {async: true}),

如果尚未加载联系人,则会异步加载联系人。如果它们已被加载,它将只返回加载的联系人。

我假设您有以下型号:联系人,付款。