ember本地存储适配器:如何获取数据并对其进行处理

时间:2017-01-15 01:16:26

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

我将Ember与Electron结合使用。

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

为此我使用了ember-local-storage adapter。

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

这就是我要存储的内容(例如):

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

这是localstorage(开发工具)中显示的内容:

{"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请求的Promises的params数组的基础。 我可以做些什么来实现可重用的结构? 例如: 0:{RECORD1} 1:{RECORD2}

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

非常感谢!

1 个答案:

答案 0 :(得分:0)

首先,你确定你的模型叫"按钮"?您可能需要使用

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

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

其次,我不认为Ember Data有利于设置。我发现创建自定义"设置更容易#34; service并使用它。让我与node-webkit分享我使用的my implementation。它对你不起作用"就像#34;,但你可能会有所了解。我支持文件和本地存储(用于web-app的nw-app和存储文件),如果只需要本地存储,则可以简化_persist_restore方法。

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