【问题标题】:ember local storage adapter: how to get data and work on itember 本地存储适配器:如何获取数据并对其进行处理
【发布时间】:2017-05-30 03:17:26
【问题描述】:

我将 Ember 与 Electron 结合使用。

由于用户可以为应用定义一些设置,我认为将设置数据存储在本地存储中是一个不错的主意。

为此,我使用 ember-local-storage 适配器。

存储、删除和显示这些数据就像一个魅力但是 这些设置应该在某些功能中使用,所以我想将它们从本地存储中取出。 我期望一个数组或 JSON 对象,甚至与本地存储中显示的格式相同。但我只收到一个巨大的抽象对象?!

这是我想要存储的(例如):

{"identifier":"identifier1","bid":"6653ggd245","name":"test1"}
{"identifier":"identifier2","bid":"kkhd7765vv","name":"test2"}

这是本地存储(开发工具)中显示的内容:

{"buttons":
  {"records":
    {"i7lvj":{"id":"i7lvj","identifier":"identifier1","bid":"6653ggd245","name":"test1"},"i80vm":{"id":"i80vm","identifier":"identifier2","bid":"kkhd7765vv","name":"test2"}
  }}}

这是我尝试访问数据的方式:

this.get('store').findAll('buttons').then(function(SavButtons){

      console.log(SavButtons);
 });// gett all stored buttons


this.get('store').findRecord('buttons','i7lvj').then(function(SavButtons){

      console.log(SavButtons.data);
 });// get specific button -> works 

此数据是生成参数数组以用于 API 请求的 Promise 的基础。 我该怎么做才能使这个结构成为可重用的结构? 例如: 0:{记录1} 1:{记录2}

或者是否有更简单/更好的方法来存储用户在应用关闭后所做的设置,也许我遗漏了一些东西。

非常感谢!

【问题讨论】:

  • 你可以尝试toArray方法转换成普通数组。或者使用forEach遍历并构建所需的结构并使用本地存储适配器存储并检索它。

标签: ember.js ember-data electron ember-local-storage


【解决方案1】:

首先,您确定您的模型称为“按钮”吗?您可能需要使用

this.get('store').findAll('button')

此外,您从商店收到的是Ember.ArrayProxy 或其他从 Ember.Array 扩展的类。它有处理元素的特殊方法,你应该试试那些

其次,我不认为 Ember Data 对设置有好处。我发现创建自定义“设置”service 并使用它要容易得多。让我分享一下我在 node-webkit 中使用的 my implementation。它不会“按原样”为您工作,但您可能会有所了解。我支持文件和本地存储(用于 nw-app 的文件和用于 web-app 的存储),如果您只需要本地存储,您可以简化 _persist_restore 方法。

对其工作原理的简要说明:它是一个基本服务,修改了initsetsetProperties 方法。因此,当您调用控制器this.get('settings').set('key', vale); 时,设置将保存在本地存储中。当服务初始化时,设置将从存储加载到内存。一个限制:您必须显式调用设置服务的setsetProperties 方法,如果您将使用this.set('settings.key', value); 之类的方法,则设置将不会被持久化。独立服务相对于 ember 数据的主要优点是您不需要为不同类型的设置创建模型,您可以保存任何简单的值或 POJO。

【讨论】:

  • 是的,它被称为“按钮”。我对 Ember 很陌生,说实话,它比我想象的要复杂得多。我真的不明白模型的含义以及何时使用它们。我已经阅读了几篇文章,但这只是非常基本的东西。非常感谢分享!我会在周末尝试一下。总而言之,这正是我所需要的。我只想持久存储带有用户设置的 JSON 对象。我以为我什至会在模型在那里的时候使用它们……但现在也许这已经很远了:)
  • @HS_hendrix 模型的创建与 ORM 中的模型相同(如果您熟悉后端开发)。模型代表一些数据结构,因此它应该适用于任何用户数据。例如,在 todo 应用程序中,您有代表每个项目的模型。想法很好,但在实践中,Ember Data 不够灵活,有时会使您的代码更加复杂。
  • @HS_hendrix 另外,你安装了 ember 检查器吗?它有助于调试此类问题。例如,您可以查看 ember 数据的商店现在有什么(如果它有任何记录或没有)
  • 感谢您的信息。是的,安装了 ember 检查器,并且列出的记录非常漂亮:)
猜你喜欢
  • 1970-01-01
  • 2013-08-09
  • 2014-10-28
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
相关资源
最近更新 更多