【问题标题】:Filtered arrays and since() functionality in ember-dataember-data 中的过滤数组和 since() 功能
【发布时间】:2013-09-30 09:41:52
【问题描述】:

我有一个包含用户活动的后端资源,我想在应用程序中根据一天的活动价值呈现活动。我在路由器中定义了一个名为 ActivitiesControllerArrayController,如下所示:

this.resource('activities', { path: '/activities/:by_date' }, function() {
    this.route('new');
});

REST API 提供以下 GET 方法:

GET /activities/[by_date]

到目前为止,这看起来相当对称且可以实现,但我遇到了两个问题:

  1. 参数化数组查找。通常,参数化路由将由 ObjectController 提供服务,但在这种情况下,by_date 参数只是减少/过滤活动数组,但它仍然是返回的数组。我不确定如何在 ActivitiesRoute 的模型钩子中构建它,以便它有效地执行“findAll”而不是期望单个结果集。
  2. 由于功能。由于带回这些活动数组需要合理的网络成本,我希望尽可能地减少这一点,并且 REST API 通过允许 since 参数与最后一次请求的日期一起传递来支持这一点。这样,如果自上次调用以来没有更新任何记录,并且如果有新记录,则服务器只需返回 304 代码,如果有新记录,则只返回 new 记录。有没有办法用 ember-data 来“开箱即用”?这是否需要构建自定义适配器?如果有,是否有任何可用的开源解决方案?

附言我在想#2 的部分答案可能是合并 Alex Speller 的 查询参数http://discuss.emberjs.com/t/query-string-support-in-ember-router/1962/48

【问题讨论】:

  • 更详细地查看 查询参数 我不太相信它会解决我的“since”问题,因为它似乎与我实际执行的 URL 有很强的联系在我的情况下想要。

标签: ember.js ember-data


【解决方案1】:

您的路线的模型挂钩是什么样的?我在想这样的事情应该可行:

model: function(params) {
  return this.store.find('activity', { by_date: params.by_date });
}

【讨论】:

  • 这不会解决因为功能。至于 parameterized array find ...是的,我猜它确实在某种程度上,但我不喜欢的是它 always 返回服务器以检索数据。我想我可以围绕它构建一些逻辑,通过将返回的 Id 缓存到 SessionStorage 来让它表现得更好。让我考虑一下,明天我会在这里回复。感谢您退回此解决方案,因为我可能太快跳过了它。
  • @ken 好吧,您显然可以手动添加一个 since 参数,但这不是“开箱即用”。看起来 EmberData 确实有一个作为 since 传递给服务器的 sinceToken,但我不确定如何使用它。
  • since 参数的 WRT 非常有趣...我想知道我是否应该在 Discourse 讨论线程上或作为 SO 问题询问这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 2016-03-07
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多