使用 EmberData 在本地存储中缓存远程数据

2024-05-17

我有一个关于使用 Ember 加载和缓存远程对象的问题。我正在开发一个 Ember 应用程序,它通过 REST API 使用服务器端存储。一些获取的数据很少发生变化,因此每次应用程序加载时都从服务器获取数据是不必要的。但这对于需要离线工作并仍将数据保存到服务器的应用程序来说也是一个问题。

Ember Data 有一个内置的存储适配器,用于通过 REST API 持久化模型,并且有本地存储适配器 https://github.com/rpflorence/ember-localstorage-adapter以及(正如下面肯指出的那样)。问题(如果这是一个问题)是一个模型只有一个存储适配器,除了将它们保存在内存中之外,似乎没有任何缓存获取的模型的概念。

我在这个中发现了类似的请求并在对此的评论中汤姆·戴尔的演讲 http://www.youtube.com/watch?v=djhAsWGOImk,但我还没有发现任何迹象表明这将是 Ember 中的现有功能。

我有两个问题(第一个问题很重要):

  1. 目前,在本地存储中实现缓存模型并根据需要将其与远程数据同步的最佳方法是什么?
  2. 这是计划包含在 Ember 中的功能,还是至少维护者认为最终应该添加的功能?

当谈到1)时,我可以想到几个策略:

a) 扩展现有适配器并添加自定义远程同步机制:

App.Store.registerAdapter('App.Post', DS.LSAdapter.extend({
  // do stuff when stuff happens
}));

b) 维护单独的模型类——一组用于远程对象,一组用于本地对象——并根据需要在它们之间进行同步。对于标准 Todo 案例:

RemoteTodo –*sync*– Todo
                     |
                     UI

我有点希望这是一个真正的菜鸟问题,并且有一个良好的既定模式。

Updated: Found 这个类似的问题 https://stackoverflow.com/questions/13591899/architecture-for-data-layer-that-uses-both-localstorage-and-a-rest-remote-server?rq=1。它有一个很好的答案,但它是理论上的。我认为我需要的是一些实践技巧或示例实现的指针。


只是为了“提升”这个线程一点,因为它是我研究restful api 的 ember 本地缓存解决方案等时的最佳结果之一:

Dan Gebhardt 似乎在 Orbit.js 及其与 Ember 的集成方面做得非常好:https://github.com/orbitjs/ember-orbit https://github.com/orbitjs/ember-orbit

Orbit 是一个独立的库,用于协调对数据源的访问 和保持内容同步.

Orbit 为构建高级功能奠定了基础 离线操作、维护等客户端应用 本地缓存、撤消/重做堆栈和临时编辑的同步 上下文。

Orbit.js 特点:

  • 支持应用程序中任意数量的不同数据源,并通过通用接口提供对它们的访问。

  • 允许满足不同来源的请求,包括指定优先级和后备计划的能力。

  • 允许记录同时存在于不同来源的不同状态。

  • 协调跨来源的转换。尽可能自动处理合并,但允许完全自定义控制。

  • 允许阻塞和非阻塞转换。

  • 允许同步和异步请求。

  • 通过跟踪操作的逆操作来支持事务和撤消/重做。

  • 使用纯 JavaScript 对象。

不要错过他关于 Orbit 的精彩演讲和幻灯片:
Orbit.js 简介 http://www.youtube.com/watch?v=IAwk_mF-dWo

(UPDATE:我从 Orbit 页面添加了一些更多的描述性信息,因为我的帖子因“仅”引用外部资源而不包含实际的解决方案而被否决。但在我看来,Orbit 似乎喜欢这个解决方案,而在这里“包含”这个的唯一方法是通过链接。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 EmberData 在本地存储中缓存远程数据 的相关文章

  • 如何将 hashbang url 更改为历史 API

    我正在使用 ember1 0 rc3 我想将 hashbang url 更改为正常的 url 格式 即 www site com admin page1 到 www site com admin page1 更改 我在应用程序路由器中使用位
  • 使用 EmberData 在本地存储中缓存远程数据

    我有一个关于使用 Ember 加载和缓存远程对象的问题 我正在开发一个 Ember 应用程序 它通过 REST API 使用服务器端存储 一些获取的数据很少发生变化 因此每次应用程序加载时都从服务器获取数据是不必要的 但这对于需要离线工作并
  • Emberjs 将多个控制器加载到一个控制器中

    SCENARIO我目前有一个IndexRoute 我想将另外 3 个控制器加载到其中 另外 3 个控制器称为Sports News Business 我阅读了 embersjs 文档 它指出您需要实现renderTemplate钩入Inde
  • 将检索到的 Ember 数据记录转换为普通对象的 Ember 方法是什么?

    我使用以下方法检索了一系列记录var items store find model 返回的对象是一个实例RecordArray 并包含多个条目 每个条目都有一个 Ember 对象 允许我在记录中获取和设置属性 一切看起来都不错 现在我需要将
  • 同时使用 localStorage 和 REST 远程服务器的数据层架构

    任何人对于如何实现同时使用 localStorage 和 REST 远程存储的数据持久层都有任何想法或参考 某个客户端的数据存储在 localStorage 中 使用 ember data indexedDB 适配器 本地存储的数据与远程服
  • Rails 和 Ember 的 JSONAPI 强参数

    我将 Ember 与 ember data 和 Rails api 一起使用 我有一个 createRecord 和 save 来保存工作正常的记录 用于在 Rails 中创建记录的发布请求的网络选项卡中的有效负载如下所示 data att
  • 有没有办法在 ember 商店中的任何 ember 模型更改上设置观察者?

    首先 我使用的是ember 2 我正在请求后端 它返回一些数据 然后 我将这些数据推送到 ember 存储中的模型 问题是我想在更新此模型时执行一些操作 那么 有没有办法在店里观察模型呢 先感谢您 findAll返回实时数组 因此我们可以为
  • 如何使用自定义助手(把手)实现嵌套的每个循环

    我正在尝试与 Ember js 和 Handlebar js 一起构建一个表 不幸的是 我陷入了如何构建由带有 valueBinding 的 Ember TextArea 组成的单元格的方式 这个想法如下 有一个领域模型项目 它有很多条目
  • 如何使用 ember.js 进行类似过滤

    我在 ember pre 1 0 中有一个简单的 ArrayController 发现如果过滤器找到给定属性的完全匹配 我可以削减列表 但我似乎找不到的是如何使用过滤器进行 like 查询 如果我搜索包含用户的数组 下面的内容将起作用 fi
  • Ember.js - 从计算属性返回 unicode 字符

    我试图从计算属性返回 unicode 字符 但是 不断逃脱 amp 我什至尝试过像这样返回 Handlebars SafeString return new Ember Handlebars SafeString 61573 产生相同的结果
  • 使用 ember.js 无限滚动(延迟加载)

    我有一个视图 其中可能有大量项目供用户滚动 我想实现无限滚动以实现内容的渐进加载 看起来有些人已经做了分页 https stackoverflow com questions 8778259 ember js rendering large
  • 使用 ActiveModel::Serializers 包含两个父 json 数组

    我正在尝试发送如下所示的前端应用程序 json facilities id 5 name happy days ranch location address 1424 Pastoral Lane zipcode 25245 instruct
  • EmberJS 支持单字母单词模型吗?

    我无法真正确定问题是 Ember 还是 Ember 数据 或者甚至是一个问题 但发生的情况如下 假设你的模型被称为tell me a story 如果您使用 ActiveModelAdapter 这将是您的 JSON 应该提供的名称 无论如
  • 如何使用 Ember.run.debounce 实现正确的关闭

    我尝试使用 Ember run debounce 仅在有许多子视图触发保存时触发父视图或控制器上的保存操作 问题似乎是闭包 匿名函数 但我找不到在这种情况下在 Ember 中实现去抖的最佳方法的任何示例 这是一个概述该问题的 jsbin 任
  • Ember-数据引导模型对象

    当使用非远程 AJAX 调用的现有 JSON 引导 Ember 数据模型对象时 我是否必须进行以下 2 个调用 App store load App Account data var account App store find App A
  • Ember - 如何在嵌套数据对象上使用pushObject?

    由于这篇文章 我已经可以将新对象推入 jobs 和 jobProducts 数组中如何在 Ember js 中创建嵌套模型 https stackoverflow com questions 9186214 how to create ne
  • Ember 模板中的访问常量

    不确定正确的 Ember Way 是什么来做到这一点 我有以下模板 我想要三个task item list组件实例 每个实例都有不同的taskState价值 显然 我想摆脱神奇的数字 h4 Tasks h4 div h5 Backlog h
  • 当加载详细条目和条目列表时,Ember 数据会删除列表响应中未设置的字段

    我有一个Book模型 具有多个属性 例如title author and prices prices是一个历史定价信息的大列表 当我从 API 请求图书列表时 我排除了prices场以保持响应较小 在书籍详细信息视图中 我请求完整的书籍信息
  • ember-data:如何制作正在保存/已保存的闪存消息

    为了在我的应用程序顶部制作一个黄色的 正在保存 已保存 指示符消息 我希望有一个布尔属性来指示当前是否有任何余烬数据记录正在运行 我试过这个 App store DS Store create isSaving gt for record
  • ember 错误:编译错误:不是助手

    我在开发前端时遇到以下错误Ember js ember 错误 编译错误 不是助手 这个错误是什么意思 Reason 如果没有 Ember 会抛出此错误成分 or helper在您的项目或依赖的插件中找不到给定名称 怎么解决 您应该检查您编写

随机推荐

  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • 使用 pybtex 将 bibtex 转换为格式化的 HTML 参考书目,例如哈佛风格

    我正在使用 Django 并将 bibtex 存储在我的模型中 并且希望能够以格式化 HTML 字符串的形式向我的视图传递引用 使其看起来像哈佛引用样式 使用中描述的方法Pybtex 无法识别 bibtex 条目 https stackov
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 将构建参数传递给 .wxs 文件以动态构建 wix 安装程序

    我是一名学生开发人员 我已经为我现在工作的公司构建了几个安装程序 所以我对WIX还是比较熟悉的 我们最近决定拥有一个构建服务器来自动构建我们的解决方案 它构建调试和发布以及混淆 和非混淆 项目 你真的不需要理解这些 您需要了解的是 我有相同
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 如何使用 vanilla JS 实现可维护的反应式 UI

    今天我遇到了一个问题 可以通过使用像 Vue 这样的反应式和状态管理框架来轻松解决 遗憾的是 无法使用它 以下 简化 情况 链接到代码笔 https codepen io theiaz pen BazErKV 我们有一个服务器渲染的页面 其
  • XAML 中的 CSS 等效项

    在 Web 开发中 样式表非常常用 Swing 中有用于处理 GUI 的布局管理器 我关于 XAML 应用这些范例之一的假设是否正确 两个都 在这种情况下 哪一个是首选 我已经检查过 Intellisense 但除了Style领域 我没有发
  • 如何在 Angular 项目中使用 Bootstrap?

    我开始我的第一次Angular应用程序和我的基本设置已完成 我怎样才能添加引导程序我的申请 如果您可以提供一个示例 那么这将是一个很大的帮助 如果您使用Angular CLI要生成新项目 还有另一种方法可以使 bootstrap 可访问角度
  • 是否有与 C++11 emplace/emplace_back 函数类似的 C# 函数?

    从 C 11 开始 可以写类似的东西 include
  • IntelliJ IDEA 覆盖 $user

    这是一个非常简单的问题 但我无法使用 SO Search 和 Google 找到答案 是否可以覆盖默认值 userVTL变量在文件模板中全局使用 而不是在每个模板中设置它 set user 就像 IntelliJ 本身的某种设置脚本一样 我
  • 有没有办法在 MS Windows(Powershell 或 CMD)的 ripgrep 中转义引号?

    我想找一个字符串 Hello Hello 以双引号开头 在文本文件中使用ripgrep 通常 在 Bash 或 ZSH 中 这可以通过用反斜杠转义或用单引号括起来来实现 rg Hello rg Hello 然而 在 MS Windows P
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • Oracle即时客户端和Oracle客户端之间的区别

    Oracle即时客户端和Oracle客户端有什么区别 你能给我解释一下吗 谢谢 Oracle 客户端附带一个安装程序和许多可执行文件 例如 sqlplus tnsping 很完整而且很大 Oracle Instant 客户端是一个基本的轻量
  • 获取点击的的DOM路径

    HTML div class lol a class rightArrow href a div 伪代码 rightArrow click function rightArrowParents this dom dom is the pse
  • 在 Android 中上传文件出现内存不足错误

    我的上传代码如下 String end r n String twoHyphens String boundary try URL url new URL ActionUrl HttpURLConnection con HttpURLCon
  • 自托管 WCF REST 服务和基本身份验证

    我创建了一个自托管的 WCF REST 服务 带有 WCF REST Starter Kit Preview 2 中的一些额外内容 这一切工作正常 我现在正在尝试向服务添加基本身份验证 但我在 WCF 堆栈中遇到了一些相当大的障碍 这阻止了
  • 以编程方式在 App Store 上运行搜索?

    是否可以从我的应用程序中打开 App Store 应用程序并运行搜索 我想看看是否有一个 appstore 类型的 URL 可以使用 就像 mailto 和 sms 分别打开邮件和短信一样 有谁知道这是否可能 编辑 更多信息 我一直在尝试使
  • 使用 EmberData 在本地存储中缓存远程数据

    我有一个关于使用 Ember 加载和缓存远程对象的问题 我正在开发一个 Ember 应用程序 它通过 REST API 使用服务器端存储 一些获取的数据很少发生变化 因此每次应用程序加载时都从服务器获取数据是不必要的 但这对于需要离线工作并